[wiki/auth] Deux modules, un pour la zone crans, un pour la catégorie page publique
This commit is contained in:
parent
9a78c10805
commit
023239ac4e
2 changed files with 92 additions and 0 deletions
51
wiki/auth/ip_range.py
Normal file
51
wiki/auth/ip_range.py
Normal file
|
@ -0,0 +1,51 @@
|
|||
# -*- coding: iso-8859-1 -*-
|
||||
"""
|
||||
MoinMoin - CAS authentication
|
||||
|
||||
Jasig CAS (see http://www.jasig.org/cas) authentication module.
|
||||
|
||||
@copyright: 2012 MoinMoin:RichardLiao
|
||||
@license: GNU GPL, see COPYING for details.
|
||||
"""
|
||||
|
||||
import urlparse
|
||||
from netaddr import IPNetwork, IPAddress
|
||||
|
||||
from MoinMoin.auth import BaseAuth
|
||||
from MoinMoin import user
|
||||
from anonymous_user import AnonymousAuth
|
||||
|
||||
class IpRange(AnonymousAuth):
|
||||
name = 'IpRange'
|
||||
|
||||
def __init__(self, auth_username="Connexion", local_nets=[], actions=[], actions_msg={}):
|
||||
AnonymousAuth.__init__(self, auth_username=auth_username)
|
||||
self.local_nets = local_nets;
|
||||
self.actions = actions
|
||||
self.actions_msg=actions_msg
|
||||
|
||||
def can_view(self, request):
|
||||
try:
|
||||
for net in self.local_nets:
|
||||
if IPAddress(request.remote_addr) in IPNetwork(net):
|
||||
return True
|
||||
except:
|
||||
pass
|
||||
return False
|
||||
|
||||
def request(self, request, user_obj, **kw):
|
||||
user_obj, cont = AnonymousAuth.request(self, request, user_obj, **kw)
|
||||
if user_obj and not user_obj.valid:
|
||||
# Are we trying to do a protected action (eg newaccount)
|
||||
action = request.args.get("action", "")
|
||||
if action in self.actions:
|
||||
if action in self.actions_msg.keys():
|
||||
request.theme.add_msg(self.actions_msg[action])
|
||||
p = urlparse.urlparse(request.url)
|
||||
url = urlparse.urlunparse(('https', p.netloc, p.path, "", "", ""))
|
||||
request.http_redirect(url)
|
||||
return user_obj, True
|
||||
|
||||
return user_obj, False
|
||||
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue