1 import hashlib
, simplejson
, urllib
3 from roundup
.cgi
.actions
import LoginAction
4 from roundup
.i18n
import _
6 class AufRoaLoginAction(LoginAction
):
7 auf_roa_url
= 'http://authentification.auf.org/auth/user/'
8 auf_email_suffix
= "@auf.org"
10 def verifyLogin(self
, username
, password
):
11 if username
.endswith (self
.auf_email_suffix
):
12 username
= username
.remplace (self
.auf_email_suffix
, "")
14 email
= "%s%s" % (username
, self
.auf_email_suffix
)
15 md5pass
= hashlib
.md5 (password
).hexdigest ()
17 url
= "%s?filter_email=%s&filter_password=%s&format=json" \
18 % (self
.auf_roa_url
, md5pass
, email
)
22 ud
= urllib
.urlopen (url
)
23 list = simplejson
.load (ud
)
27 self
.client
.make_user_anonymous()
28 self
.client
.error_message
.append(_("Compte invalide ou erreur ROA"))
31 props
= {'realname': "%s %s" % (user
.first_name
, user
.last_name
),
32 'username': user
.email
,
33 'address': user
.email
}
34 self
.journaltag
= 'admin'
36 props
['roles'] = self
.db
.config
.NEW_WEB_USER_ROLES
37 self
.userid
= cl
.create (**props
)
39 self
.client
.userid
= self
.db
.user
.lookup(self
.client
.user
)
42 instance
.registerAction('login', AufRoaLoginAction
)