def test_create_jwt_from_user_data_adds_permission_and_user_info_to_jwt(self): user_info = { u'id': 1099636, u'first_name': u'Graham', u'last_name': u'Holtslander' } user_permissions = { u'staff': False, u'can_create_in_group_ids': { u'albums': [104760, 105013, 105068, 116066, 96293, 104999, 107330, 104934], u'events': [104760, 105013, 105068, 116066, 96293, 104999, 107330, 104934], u'needs': [104760, 105013, 105068, 116066, 96293, 104999, 107330, 104934], u'prayers': [104760, 105013, 105068, 116066, 96293, 104999, 107330, 104934], u'topics': [104760, 105013, 105068, 116066, 96293, 104999, 107330, 104934] }, u'admin': True } user_jwt = create_jwt_from_user_data(user_permissions, user_info) jwt_decoded = jwt.decode(user_jwt, MEDIASITE_JWT_SECRET) self.assertEqual([104760, 105013, 105068, 116066, 96293, 104999, 107330, 104934], jwt_decoded['usr']['grp']) self.assertTrue(jwt_decoded['usr']['adm']) self.assertFalse(jwt_decoded['usr']['stf']) self.assertEqual(user_info['id'], jwt_decoded['usr']['id']) self.assertEqual(user_info['first_name'], jwt_decoded['usr']['fna']) self.assertEqual(user_info['last_name'], jwt_decoded['usr']['lna'])
def get(self): code = self.request.GET.get('code') if code: user_info = TheCitySDK.post_for_user_token(code) sdk = TheCitySDK(user_info.get('access_token')) user_permissions = sdk.get_user_permissions() if 'error_code' not in user_permissions: if sdk.user_is_in_worship_arts(user_permissions): logging.info('This user can join our site') user_info_dict = sdk.get_basic_user_info() user_info_dict['jwt'] = create_jwt_from_user_data(user_permissions, user_info_dict) User.put_from_city_dict(user_info_dict) self.redirect('/login?success=true&userId={}'.format(user_info_dict['id'])) else: logging.info('This user needs to be added to a Worship Arts group on The City') # TODO: Redirect to a different landing page explaining the purpose of this site and who to contact. self.redirect('/') else: self.redirect('/login')