Commit 7f159f54 authored by Gabriel Monnerat's avatar Gabriel Monnerat

erp5_oauth_google_login: Use portal types instead of add prefix to references

parent 32906510
......@@ -16,10 +16,7 @@ if person is not None:
activate_kw = {'tag': tag}
# In future we can move this script to another, because this script is generic enough
# to support Facebook login
if reference.startswith("go_"):
portal_type = "Google Login"
else:
raise RuntimeError("Impossible to select a portal type")
assert login_portal_type in ("Google Login",), "Impossible to select a portal type"
if erp5_username in ("Anonymous User", None):
person = portal.person_module.newContent(portal_type='Person',
......@@ -53,7 +50,7 @@ if erp5_username in ("Anonymous User", None):
else:
person = portal.ERP5Site_getAuthenticatedMemberPersonValue(erp5_username)
login = person.newContent(portal_type=portal_type,
login = person.newContent(portal_type=login_portal_type,
reference=reference)
login.validate(activate_kw=activate_kw)
......
......@@ -50,7 +50,7 @@
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>tag, first_name, last_name, reference, email, erp5_username=None</string> </value>
<value> <string>tag, first_name, last_name, reference, email, login_portal_type, erp5_username=None</string> </value>
</item>
<item>
<key> <string>id</string> </key>
......
......@@ -19,7 +19,7 @@ elif code is not None:
" ".join(["%s : %s" % (k,v) for k,v in response_dict.iteritems()]))
if response_dict is not None:
access_token = response_dict['access_token'].encode('utf-8')
response_dict['login'] = 'go_' + context.ERP5Site_getGoogleUserId(access_token)
response_dict['login'] = context.ERP5Site_getGoogleUserId(access_token)
response_dict['erp5_username'] = portal.portal_membership.getAuthenticatedMember().getUserName()
hash_str = context.Base_getHMAC(access_token, access_token)
context.REQUEST.RESPONSE.setCookie('__ac_google_hash', hash_str, path='/')
......
......@@ -110,20 +110,22 @@ class TestGoogleLogin(ERP5TypeTestCase):
def test_create_user_with_google_id(self):
self.login()
user_id = "go_" + getUserId(None)
user_id = getUserId(None)
person = self.portal.portal_catalog.getResultValue(portal_type="Person",
reference=user_id,
validation_state="validated")
if person:
person.invalidate()
self.tic()
self.portal.Base_createOauth2User(
'123_user_creation_in_progress',
'User',
'Last Name',
user_id,
'example@email.com',
'Anonymous User')
user_entry = {"tag": '123_user_creation_in_progress',
"first_name": "User",
"last_name": "Last Name",
"reference": user_id,
"email": 'example@email.com',
"login_portal_type": "Google Login",
"erp5_username": 'Anonymous User'
}
self.portal.Base_createOauth2User(**user_entry)
self.tic()
google_login = self.portal.portal_catalog(portal_type="Google Login",
reference=user_id,
......@@ -131,4 +133,6 @@ class TestGoogleLogin(ERP5TypeTestCase):
self.assertNotEqual(None, google_login)
self.login(user_id)
person = self.portal.ERP5Site_getAuthenticatedMemberPersonValue()
self.assertEqual(user_id, person.getReference())
\ No newline at end of file
self.assertEqual(user_id, person.getReference())
self.assertEqual(user_entry["first_name"], person.getFirstName())
self.assertEqual(user_entry["last_name"], person.getLastName())
\ No newline at end of file
......@@ -196,6 +196,7 @@ class ERP5ExternalOauth2ExtractionPlugin:
self.REQUEST['USER_CREATION_IN_PROGRESS'] = user_dict
#if user_entry is None:
user_entry = self.getUserEntry(user_dict)
user_entry["login_portal_type"] = creds["login_portal_type"]
user_entry["erp5_username"] = user_dict.get("erp5_username")
try:
Base_createOauth2User(tag, **user_entry)
......@@ -249,8 +250,7 @@ class ERP5FacebookExtractionPlugin(ERP5ExternalOauth2ExtractionPlugin, BasePlugi
try:
for k in ('first_name', 'last_name', 'id', 'email'):
if k == 'id':
user_entry['reference'] = self.prefix + facebook_entry[k].encode(
'utf-8')
user_entry['reference'] = facebook_entry[k].encode('utf-8')
else:
user_entry[k] = facebook_entry[k].encode('utf-8')
except KeyError:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment