def verify_auth_token(token):
    d = _load(current_app.config['SECRET_KEY'], token, salt=g.secret)
    if d:
        user = UserService.get(d.get('i'), raise_not_found=False)
        if user:
            return user if user.tick == d.get('t') else None
    return None
Example #2
0
def index(user_service: UserService):
    try:
        offset = request.args.get('offset', default=0, type=int)
        limit = request.args.get('limit', default=10, type=int)

        user_models = user_service.get(offset, limit)
        users = [UserVo(user_model).to_dict() for user_model in user_models]

        return jsonify({"users": users}), 200
    except Exception as e:
        logger.error(e)
        return jsonify({'message': 'Failed ...'}), 500
Example #3
0
    def post(self, args):
        """Create a new Token."""
        user = UserService.get(email=args['email'], raise_not_found=False)

        if not user:
            response.abort(response.Unauthorized.code)

        verified = False
        if UserService.check_password(user.password, args['password']):
            verified = True
        elif UserService.check_password(user.temp_password, args['password']):
            verified = True
            # these are only good once
            UserService.set_password(user, None, attr='temp_password')

        if verified:
            token = login_user(user)  # user.tick is bumped with each login

            db.session.commit()
            return {'token': token, 'user_id': user.id}
        else:
            response.abort(response.Unauthorized.code)
Example #4
0
class ContactController(Controller):
    def __init__(self):
        self.status = None
        self.content = None
        self.__errors = []
        self.__contact_service = ContactService()
        self.__email_service = EmailService()
        self.__phone_service = PhoneService()
        self.__user_service = UserService()

        def save(self, user_id, data):
            __user = self.__user_service.get(user_id)
            self.__verify_user(__user)

            if not data['name']:
                self.__errors.append(USER['CONTACT']['NAME']['NOT_FOUND'])

            if len(self.__errors) > 0:
                self.content = {'errors': self.__errors}
                self.status = STATUS_CODE['NOT_FOUND']
            else:
                __contact = self.__contact_service.save(data)
                self.content = {'data': __contact.toDICT()}
                self.status = STATUS_CODE['CREATED']

        def add_phone(self, user_id, contact_id, data):
            self.__verify_phone(data['phone'])
            __contact = self.__contact_service.get(user_id, contact_id)
            self.__verify_contact(__contact)

            if len(self.__errors) > 0:
                self.content = {'errors': self.__errors}
            else:
                data['user_id'] = user_id
                self.__phone_service.save(data)
                self.__get_contatc(__contact)

        def add_email(self, user_id, contact_id):
            self.__verify_email(data['email'])
            __contact = self.__contact_service.get(user_id, contact_id)
            self.__verify_contact(__contact)

            if len(self.__errors) > 0:
                self.content = {'errors': self.__errors}
            else:
                self.__email_service.save(data)
                self.__get_contatc(__contact)

        def __get_contatc(self, contact):
            __contact_dict = contact.toDICT()
            __phones = self.__phone_service.get(contact.id)
            __emails = self.__email_service.get(contact.id)
            __contact_dict['phones'] = super().__toLIST(__phones)
            __contact_dict['emails'] = super().__toLIST(__emails)
            self.content = {'data': __contact_dict}
            self.status = STATUS_CODE['OK']

        def get(self, user_id, contact_id):
            __contact = self.__contact_service.get(user_id, contact_id)
            self.__verify_contact(__contact)

            if len(self.__errors) > 0:
                self.content = {'errors': self.__errors}
            else:
                self.__get_contatc(__contact)

        def update(self):
            pass

        def remove(self):
            pass

        def __verify_user(self, user):
            if not user:
                self.__errors.append(USER['NOT_FOUND'])
                self.status = STATUS_CODE['NOT_FOUND']

        def __verify_contact(self, contact):
            if not contact:
                self.__errors.append(USER['CONTACT']['NOT_FOUND'])
                self.status = STATUS_CODE['NOT_FOUND']

        def __verify_email(self, email):
            if not email:
                self.__errors.append(USER['CONTACT']['EMAIL']['NOT_FOUND'])
                self.status = STATUS_CODE['NOT_FOUND']

            elif not is_valid_email(email):
                self.__errors.append(USER['CONTACT']['EMAIL']['INVALID'])
                self.status = STATUS_CODE['BAD_REQUEST']

        def __verify_phone(self, phone):
            if not phone:
                self.__errors.append(USER['CONTACT']['PHONE']['NOT_FOUND'])
                self.status = STATUS_CODE['NOT_FOUND']
Example #5
0
 def get(user_id):
     return Response(json.dumps(UserService.get(user_id)))