This repository has been archived on 2024-05-31. You can view files and clone it, but cannot push or open issues or pull requests.
devicehub-teal/ereuse_devicehub/resources/user/views.py

38 lines
1.1 KiB
Python
Raw Normal View History

2021-03-02 20:27:14 +00:00
from uuid import UUID, uuid4
2018-04-27 17:16:43 +00:00
from flask import g, request
2021-03-02 20:27:14 +00:00
from flask.json import jsonify
2018-04-27 17:16:43 +00:00
2021-03-02 20:27:14 +00:00
from ereuse_devicehub.db import db
2018-04-27 17:16:43 +00:00
from ereuse_devicehub.resources.user.exceptions import WrongCredentials
from ereuse_devicehub.resources.user.models import User
2023-03-21 11:08:13 +00:00
from ereuse_devicehub.teal.resource import View
2018-04-27 17:16:43 +00:00
class UserView(View):
def one(self, id: UUID):
return self.schema.jsonify(User.query.filter_by(id=id).one())
def login():
# We use custom schema as we only want to parse a subset of user
user_s = g.resource_def.SCHEMA(only=('email', 'password')) # type: UserS
# noinspection PyArgumentList
u = request.get_json(schema=user_s)
2023-03-21 11:08:13 +00:00
user = User.query.filter_by(
email=u['email'], active=True, phantom=False
).one_or_none()
2018-04-27 17:16:43 +00:00
if user and user.password == u['password']:
schema_with_token = g.resource_def.SCHEMA(exclude=set())
return schema_with_token.jsonify(user)
2018-04-27 17:16:43 +00:00
else:
raise WrongCredentials()
2021-03-02 20:27:14 +00:00
def logout():
# We use custom schema as we only want to parse a subset of user
g.user.token = uuid4()
db.session.add(g.user)
db.session.commit()
return jsonify('Ok')