diff --git a/fas/fas/controllers.py b/fas/fas/controllers.py index d58e3bd..2815eda 100644 --- a/fas/fas/controllers.py +++ b/fas/fas/controllers.py @@ -38,7 +38,7 @@ class Root(controllers.RootController): cla = CLA() json = JsonRequest() help = Help() -# openid = OpenID() + #openid = OpenID() # TODO: Find a better place for this. os.environ['GNUPGHOME'] = config.get('gpghome') diff --git a/fas/fas/openid_fas.py b/fas/fas/openid_fas.py index 2b5e43e..e3d6635 100644 --- a/fas/fas/openid_fas.py +++ b/fas/fas/openid_fas.py @@ -11,7 +11,10 @@ from openid.store.filestore import FileOpenIDStore from fas.auth import * -from fas.user import knownUser, userNameExists +from fas.user import KnownUser + +class UserID(validators.Schema): + targetname = KnownUser class OpenID(controllers.Controller): @@ -28,8 +31,8 @@ class OpenID(controllers.Controller): @expose(template="fas.templates.openid.about") def about(self): '''Display an explanatory message about the OpenID service''' - userName = turbogears.identity.current.user_name - return dict(userName=userName) + username = turbogears.identity.current.user_name + return dict(username=username) @expose(template="genshi-text:fas.templates.openid.auth", format="text", content_type='text/plain; charset=utf-8') def server(self, **query): @@ -58,10 +61,10 @@ class OpenID(controllers.Controller): else: openid_response = None if openid_request.mode in BROWSER_REQUEST_MODES: - userName = turbogears.identity.current.user_name; + username = turbogears.identity.current.user_name; url = None - if userName is not None: - url = config.get('base_url') + turbogears.url('/openid/id/%s' % userName) + if username is not None: + url = config.get('base_url') + turbogears.url('/openid/id/%s' % username) if openid_request.identity == url: if openid_request.trust_root in session['openid_trusted']: openid_response = openid_request.answer(True) @@ -95,16 +98,15 @@ class OpenID(controllers.Controller): @expose() def login(self): '''This exists only to make the user login and then redirect to /openid/server''' - userName = turbogears.identity.current.user_name; turbogears.redirect('/openid/server') return dict() @expose(template="fas.templates.openid.id") - @validate(validators=userNameExists()) - def id(self, userName): + @validate(validators=UserID()) + def id(self, username): '''The "real" OpenID URL''' - user = Person.byUserName(userName) + person = Person.by_username(username) server = config.get('base_url') + turbogears.url('/openid/server') - return dict(user=user, server=server) + return dict(person=person, server=server) diff --git a/fas/fas/templates/openid/id.html b/fas/fas/templates/openid/id.html index 6f585fc..01a5220 100644 --- a/fas/fas/templates/openid/id.html +++ b/fas/fas/templates/openid/id.html @@ -8,13 +8,13 @@ -

${_('User %s') % user.cn}

+

${_('User %s') % person.username}

${_('Username:')}
-
${user.cn}
+
${person.username}
${_('Name:')}
-
${user.givenName}
+
${person.human_name}
diff --git a/fas/fas/user.py b/fas/fas/user.py index 6e8c016..b65acbd 100644 --- a/fas/fas/user.py +++ b/fas/fas/user.py @@ -372,6 +372,9 @@ class User(controllers.Controller): Please go to https://admin.fedoraproject.org/fas/ to change it. ''')) % newpass['pass'] if encrypted: + # TODO: Move this out to a single function (same as + # CLA one), think of how to make sure this doesn't get + # full of random keys (keep a clean Fedora keyring) try: subprocess.check_call([config.get('gpgexec'), '--keyserver', config.get('gpg_keyserver'), '--recv-keys', person.gpg_keyid]) except subprocess.CalledProcessError: