X-Git-Url: http://git.cascardo.info/?p=cascardo%2Fipsilon.git;a=blobdiff_plain;f=ipsilon%2Flogin%2Fcommon.py;h=94284b05a677b325a5acf46b18a144c24720388e;hp=2fee35780025420fa0e236d79626d7a3e734c5d4;hb=5ea128eca075c19880419c072be36fd761aad4a4;hpb=7605a4263263fb399176a0d9eea49ab7ecc81274 diff --git a/ipsilon/login/common.py b/ipsilon/login/common.py index 2fee357..94284b0 100755 --- a/ipsilon/login/common.py +++ b/ipsilon/login/common.py @@ -49,9 +49,17 @@ class LoginManagerBase(PluginObject, Log): if self.info: userattrs = self.info.get_user_attrs(username) if userdata: - userdata.update(userattrs or {}) + userdata.update(userattrs.get('userdata', {})) else: - userdata = userattrs + userdata = userattrs.get('userdata', {}) + + # merge groups and extras from login plugin and info plugin + userdata['groups'] = list(set(userdata.get('groups', []) + + userattrs.get('groups', []))) + + userdata['extras'] = userdata.get('extras', {}) + userdata['extras'].update(userattrs.get('extras', {})) + self.debug("User %s attributes: %s" % (username, repr(userdata))) if auth_type: @@ -202,8 +210,10 @@ class LoginFormBase(LoginPageBase): if username is None: username = '' + target = None if self.trans is not None: tid = self.trans.transaction_id + target = self.trans.retrieve().get('login_target') if tid is None: tid = '' @@ -216,6 +226,7 @@ class LoginFormBase(LoginPageBase): "description": self.lm.help_text, "next_url": next_url, "username": username, + "login_target": target, } context.update(kwargs) if self.trans is not None: