
Le script creer_compte_wiki ne marchait plus depuis la mise en place des tickets par moinmoin. On le répare en rajoutant une nouvelle action chargée spécialement de la création de ce compte. À terme, il faut remplacer creer_compte_wiki.py par une appli dans l'intranet qui ferait automatiquement la liaison avec un compte crans.
73 lines
2.1 KiB
Python
73 lines
2.1 KiB
Python
# -*- coding: iso-8859-1 -*-
|
|
"""
|
|
MoinMoin - create account action
|
|
modified version for Cr@ns callback only (by creer_compte_wiki.py)
|
|
|
|
|
|
@copyright: 2007 MoinMoin:JohannesBerg
|
|
@license: GNU GPL, see COPYING for details.
|
|
"""
|
|
|
|
from MoinMoin import user, wikiutil
|
|
from MoinMoin.Page import Page
|
|
from MoinMoin.widget import html
|
|
from MoinMoin.auth import MoinAuth
|
|
|
|
def do_register(request):
|
|
_ = request.getText
|
|
form = request.form
|
|
|
|
if request.method != 'POST':
|
|
return 'missing data'
|
|
|
|
# TODO : find a cleaner way to get this data
|
|
authorized_ips = [
|
|
'2a01:240:fe3d:4:2248cff:fe44:3b70', #vo.v6
|
|
'2a01:240:fe3d:4:219:bbff:fe3c:4f76', #zamok.v6
|
|
]
|
|
|
|
if request.remote_addr not in authorized_ips:
|
|
return 'invalid ip %s' % request.remote_addr
|
|
|
|
theuser = user.User(request, auth_method="new-user")
|
|
try:
|
|
theuser.name = form['name']
|
|
except KeyError:
|
|
return 'missing name'
|
|
|
|
if not user.isValidName(request, theuser.name):
|
|
return 'invalid name'
|
|
|
|
if user.getUserId(request, theuser.name):
|
|
return 'nonunique name'
|
|
|
|
password = form.get('password', '')
|
|
# Encode password
|
|
if password and not password.startswith('{SHA}'):
|
|
try:
|
|
theuser.enc_password = user.encodePassword(password)
|
|
except UnicodeError, err:
|
|
# Should never happen
|
|
return "invalid password %s" % str(err)
|
|
|
|
# try to get the email, for new users it is required
|
|
email = wikiutil.clean_input(form.get('email', ''))
|
|
theuser.email = email.strip()
|
|
if not theuser.email and 'email' not in request.cfg.user_form_remove:
|
|
return 'invalid email'
|
|
|
|
# Email should be unique - see also MoinMoin/script/accounts/moin_usercheck.py
|
|
if theuser.email and request.cfg.user_email_unique:
|
|
if user.get_by_email_address(request, theuser.email):
|
|
return 'nonunique email'
|
|
|
|
# save data
|
|
try:
|
|
theuser.save()
|
|
except Exception as err:
|
|
return 'error %s' % repr(err)
|
|
|
|
return 'created'
|
|
|
|
def execute(pagename, request):
|
|
request.write(do_register(request))
|