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'])
示例#2
0
    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')