コード例 #1
0
ファイル: resources.py プロジェクト: ashwani99/splitter
class User(Resource):
    def __init__(self):
        self.user_schema = UserSchema()

    @jwt_required
    def get(self, id=None):
        if id:
            user = UserModel.query.get(id)
            if user is None:
                return error_template('User not found', httpclient.NOT_FOUND)
            return self.user_schema.dump(user).data, httpclient.OK
        users = UserModel.query.all()
        return self.user_schema.dump(users, many=True).data, httpclient.OK

    def post(self):
        json_data = request.get_json()
        data, errors = self.user_schema.load(json_data)
        if errors:
            return errors, httpclient.UNPROCESSABLE_ENTITY

        user = UserModel(email=data['email'], username=data['username'])
        user.set_password(data['password'])
        db.session.add(user)
        db.session.commit()
        
        return self.user_schema.dump(user).data, httpclient.CREATED
        
    @jwt_required
    def put(self, id):
        user = UserModel.query.filter_by(id=id).first()
        if user is None:
            return error_template('User not found', httpclient.NOT_FOUND)
        json_data = request.get_json()
        data, errors = self.user_schema.load(json_data)
        if errors:
            return errors, httpclient.UNPROCESSABLE_ENTITY
        for attr, value in data.items():
            if attr is 'password':
                user.set_password(value)
                continue
            if getattr(user, attr) != value:
                setattr(user, attr, value)
        db.session.commit()

        return self.user_schema.dump(user).data
                
    def delete(self, id):
        return NotImplementedError
コード例 #2
0
def get_user(id):
    if current_user().id != id:
        abort(403)
    one_user = User.query.get_or_404(id)
    user_schema = UserSchema()
    output = user_schema.dump(one_user).data
    return jsonify({'user' : output})
コード例 #3
0
ファイル: user_resource.py プロジェクト: MR-IBRA55/IoTprint
 def get(self, _id: str):
     user = UserModel.get_user_by_id(_id)
     if user:
         user_schema = UserSchema()
         result: dict = user_schema.dump(user)
         return result, 200
     return {"msg": "User Not found"}, 404
コード例 #4
0
 def get(self):
     users = User.query.all()
     result = []
     schema = UserSchema()
     for user in users:
         result.append(schema.dump(user))
     return {"data": result}
コード例 #5
0
    def get(self):
        schema = UserSchema(many=True)

        args = parser.parse_args()
        search = args["search"]

        data = self.user.search_user(search=search)
        return schema.dump(data)
コード例 #6
0
    def post(self):
        candidate = request.get_json()
        schema = UserSchema()
        errors = schema.validate(candidate)
        if errors:
            return {'massage': errors}, 400
        data = schema.dump(candidate)
        if UserModel.find_by_email(data['email']):
            return {'massage': 'this mail already exist'}, 400
        user = UserModel(**data)

        user.save_to_db()
        return {'massage': 'User has been created'}, 201
コード例 #7
0
def update_user(id):
    if current_user().id != id:
        abort(403)
    user = User.query.get_or_404(id)
    data = request.get_json() or {}
    if 'username' in data and data['username'] != user.username and User.query.filter_by(username=data['username']).first():
        return bad_request('please use a different username')
    if 'email' in data and data['email'] != user.email and User.query.filter_by(email=data['email']).first():
        return bad_request('please use a different email address')
    user.from_dict(data, new_user=False)
    db.session.commit()
    user_schema = UserSchema()
    output = user_schema.dump(user).data
    return jsonify({'user': output})
コード例 #8
0
    def get(self, token):
        """
        """

        user_schema = UserSchema()

        secret = current_app.config["SECRET_KEY"]
        salt = current_app.config["VERIFICATION_SALT"]

        email = validate_token(token, secret, salt)

        if not email:
            return dict(status="fail", message="invalid token"), 401

        user = User.find_first(**{'email': email})

        if not user:
            return dict(status='fail',
                        message=f'User with email {email} not found'), 404

        if user.verified:
            return dict(status='fail',
                        message='Email is already verified'), 400

        user.verified = True

        user_saved = user.save()

        user_dict, _ = user_schema.dump(user)

        if user_saved:

            # generate access token
            access_token = user.generate_token(user_dict)

            if not access_token:
                return dict(status='fail',
                            message='Internal Server Error'), 500

            return dict(status='success',
                        message='Email verified successfully',
                        data=dict(
                            access_token=access_token,
                            email=user.email,
                            username=user.username,
                            verified=user.verified,
                            id=str(user.id),
                        )), 200

        return dict(status='fail', message='Internal Server Error'), 500
コード例 #9
0
    def post(self):
        """
        """

        user_schema = UserSchema(only=("email", "password"))

        token_schema = UserSchema()

        login_data = request.get_json()

        validated_user_data, errors = user_schema.load(login_data)

        if errors:
            return dict(status='fail', message=errors), 400

        email = validated_user_data.get('email', None)
        password = validated_user_data.get('password', None)

        user = User.find_first(email=email)
        admin_role = Role.find_first(name='administrator')

        if not user or not admin_role or (admin_role not in user.roles):
            return dict(status='fail', message="login failed"), 401

        if not user.verified:
            return dict(status='fail',
                        message='Email not verified',
                        data=dict(verified=user.verified)), 401

        user_dict, errors = token_schema.dump(user)

        if user and user.password_is_valid(password):

            access_token = user.generate_token(user_dict)

            if not access_token:
                return dict(status="fail",
                            message="Internal Server Error"), 500

            return dict(status='success',
                        data=dict(
                            access_token=access_token,
                            email=user.email,
                            username=user.username,
                            verified=user.verified,
                            id=str(user.id),
                        )), 200

        return dict(status='fail', message="login failed"), 401
コード例 #10
0
def get_users():
    all_users = User.query.all()
    user_schema = UserSchema(many=True)
    output = user_schema.dump(all_users).data
    return jsonify({'users': output})
コード例 #11
0
ファイル: python.py プロジェクト: agarun/boya
 def get(self, user_id):
     schema = UserSchema()
     user = User.query.get_or_404(user_id)
     return {"user": schema.dump(user).data}
コード例 #12
0
 def get(self, id):
     schema = UserSchema()
     data = self.user.get_user_profile(id_user=id)
     return schema.dump(data)
コード例 #13
0
 def get(self):
     user = User.query.filter_by(id=current_user_id()).first()
     user_schema = UserSchema(exclude=['password', 'avatar', 'roles'])
     return user_schema.dump(user)
コード例 #14
0
 def get(self):
     users = UserModel.query.all()
     schema = UserSchema()
     return schema.dump(users, many=True), 200
コード例 #15
0
 def users():
     users = User.query.all()
     users_schema = UserSchema(many=True)
     result = users_schema.dump(users)
     return jsonify(result)
コード例 #16
0
 def create(payload):
     user_schema = UserSchema()
     user_dict = user_schema.load(payload)
     user = UserRepository.create(user_dict)
     return user_schema.dump(user)