Exemplo n.º 1
0
 def post(self):
     req_data = request.get_json()
     req_data['created_user'] = current_user.id
     role = req_data['roles']
     req_data.pop('roles')
     errors = user_schema.validate(req_data)
     if errors:
         return errors, 500
     data = user_schema.load(req_data)
     try:
         if UserModel.find_by_username(data['username']):
             return {
                 'message':
                 'El usuario {} ya existe'.format(data['username'])
             }, 500
         user = UserModel(data)
         user.password = hash_password(user.password)
         user.create()
         ins = roles_users.insert().values(id_user=user.id_user,
                                           id_role=role)
         ins.compile().params
         result = db.session.execute(ins)
         db.session.commit()
         return {'message': 'Usuario {} creado'.format(data['username'])}
     except (sqlalchemy.exc.SQLAlchemyError,
             sqlalchemy.exc.DBAPIError) as e:
         return render_template('500.html', error=e), 500
Exemplo n.º 2
0
def add_new_user():
    fields = [
        ('email', str, True, None),
        ('password', str, True, None),
        ('password_repeat', str, True, None),
    ]
    arguments = parse_request(fields)
    UserModel.create(**arguments)
    return response(dict(email=arguments['email']), 201)
Exemplo n.º 3
0
class UserService:
    def __init__(self):
        self.model = UserModel()

    def create(self, params):
        return self.model.create(params)

    def update(self, item_id, params):
        return self.model.update(item_id, params)

    def delete(self, item_id):
        return self.model.delete(item_id)

    def login(self, params):
        return self.model.login(params)

    def list(self):
        response = self.model.list_items()
        return response
Exemplo n.º 4
0
class AuthService:
    def __init__(self):
        self.model = UserModel()

    def login(self, email, password):
        user = self.model.get_by_field('email', email)

        if user is None:
            raise UserNotFound

        if not check_password_hash(user['password'], password):
            raise InvalidCredentials

        self._authorize(user)

    def register(self, attributes: dict):
        attributes['password'] = generate_password_hash(attributes['password'])
        try:
            user_id = self.model.create(attributes)
        except sqlite3.IntegrityError as e:
            raise EmailAlreadyExist from e
        return self.get_user_profile(user_id)

    def get_user_profile(self, user_id):
        user = self.model.get_by_id(user_id)
        if user is None:
            raise UserNotFound

        user.pop("password")

        return user

    @classmethod
    def _authorize(cls, user):
        session['user_id'] = user['id']

    @staticmethod
    def logout():
        session.pop('user_id', None)

    @staticmethod
    def get_auth_user_id():
        return session.get('user_id')