Ejemplo n.º 1
0
  def post(self, provider):
    """ Attempt login """
    backend = self.get_backend(provider)()

    parser = reqparse.RequestParser()
    for f in backend.loginFields:
      parser.add_argument(f[0], type=f[1])

    args = parser.parse_args()

    user = backend.getUser(**args)
    if not user:
      abort(403, message='Login failed')
    else:
      # session['user_id'] = user.id
      data = {'user': user, 'token': generate_user_token(user)}
      ret_fields = {
        'token': fields.String,
        'user': fields.Nested({
          'id': fields.Integer,
          'email': fields.String,
          'display_name': fields.String
        })
      }
      return marshal(data, ret_fields), 200
Ejemplo n.º 2
0
  def post(self):
    """ Create new user """
    parser = reqparse.RequestParser()
    parser.add_argument('email', type=str)
    parser.add_argument('display_name', type=str)
    args = parser.parse_args()

    if args.email is None or not args.email:
      abort(400, message="An e-mail address must be provided")

    if args.display_name is None or not args.display_name:
      abort(400, message="An display name must be provided")

    user = User_model()
    user.email = args.email
    user.display_name = args.display_name

    try:
      crud.add(user)
    except IntegrityError:
      abort(400, message="User %s already exists" % args.email)

    data = dict()
    data['user'] = user
    data['token'] = generate_user_token(user)
    ret_fields = {
      'token': fields.String,
      'user': fields.Nested({
        'id': fields.Integer,
        'email': fields.String,
        'display_name': fields.String
      })
    }
    return marshal(data, ret_fields), 201
Ejemplo n.º 3
0
  def test_login_required(self):
    h = HTTPAuth()
    h.get_verify_token_callback = verify_token
    self.assertEqual(h.login_required(lambda x: x)(1).status_code, 401)

    token = generate_user_token(self.u)
    with app.test_request_context('/', headers={'authorization': 'Bearer %s' % (token)}) as c:
      self.assertEqual(h.login_required(lambda x: x)(1),1)
Ejemplo n.º 4
0
  def get(self):
    """ Return a token for logged in users """
    if not g.user:
      abort(403, message='Not valid login found')

    data = {
      'token': generate_user_token(g.user),
      'user': g.user
    }
    ret_fields = {
      'token': fields.String,
      'user': fields.Nested({
        'id': fields.Integer,
        'email': fields.String,
        'display_name': fields.String
      })
    }
    return marshal(data, ret_fields), 200
Ejemplo n.º 5
0
  def test_token(self):
    token = generate_user_token(self.u)
    self.assertIsNotNone(token)

    self.assertEqual(verify_user_token(token), self.u)