コード例 #1
0
def authenticate_user(db, document: str, password: str):
    user = get_user(db, document, password)
    user_dict = UserSchema.from_orm(user).dict()

    user = UserInDB(**user_dict)
    logger.debug(f"{user} ")
    if not user:
        return False
    return user
コード例 #2
0
    def post(self):
        data = request.get_json(force=True)

        user_schema = UserSchema()
        result = user_schema.load(data)
        if result.errors:
            return response.error(result.errors, 400)

        for user in User.get_all():  # check if user already exist
            if user.email == data['email']:
                return response.error('User already exist', 409)

        # hash password and create a new user
        hashed_password = generate_password_hash(data['password'],
                                                 method='sha256')
        new_user_obj = User(data['name'], data['email'], hashed_password)
        new_user_obj.save()

        # format and display user information
        user_schema = UserSchema(exclude=['password'])
        new_user = user_schema.dump(data)
        res, code = response.success('User created', new_user.data, 201)
        res.update(
            {'token': create_access_token(identity=new_user.data['email'])})
        return res, code
コード例 #3
0
    def post(self):
        data = request.get_json(force=True)

        user_schema = UserSchema(only=['email', 'password'])
        result = user_schema.load(data)
        if result.errors:
            return response.error(result.errors, 400)

        current_user = None
        for user in User.get_all():
            if user.email == data['email']:
                current_user = user
                break

        if not current_user:
            return response.error('User not found, Login unsuccessful', 403)

        if check_password_hash(current_user.password, data['password']):
            user_schema = UserSchema(exclude=['password'])
            active_user = user_schema.dump(current_user)
            res, code = response.success('Login successful', active_user.data,
                                         200)
            res.update({
                'token':
                create_access_token(identity=active_user.data['email'])
            })
            return res, code
        return response.error('Wrong credentials', 401)
コード例 #4
0
class PublishSchema(Schema):
    regex_for_published_date = r"Jan?|Feb?|Mar?|Apr?|May|Jun?|Jul?|Aug?|Sep?|Oct?|Nov?|Dec?\s+\d{1,2}"
    regex_for_path = r"^(.+)\/([^/]+)$"
    user_schema = UserSchema()

    type_of = fields.Str(
        required=True,
        allow_none=False,
    )
    id = fields.Int(
        required=True,
        allow_none=False,
    )
    title = fields.Str(required=True, allow_none=False)
    description = fields.Str(required=True, allow_none=False)
    readable_publish_date = fields.Str(
        required=True,
        allow_none=False,
        validate=validate.Regexp(regex_for_published_date))
    slug = fields.Str(
        required=True,
        allow_none=False,
    )
    path = fields.Str(required=True,
                      allow_none=False,
                      validate=validate.Regexp(regex_for_path))
    url = fields.Str(
        required=True,
        allow_none=False,
        validate=validate.URL(error="Not a valid URL for url field"))
    comments_count = fields.Int(required=True, allow_none=False)
    positive_reactions_count = fields.Int(required=True, allow_none=False)
    collection_id = fields.Int(required=True, allow_none=True)
    published_timestamp = fields.DateTime(required=True, allow_none=False)
    cover_image = fields.URL(required=True, allow_none=True)
    social_image = fields.URL(required=True)
    canonical_url = fields.URL(required=True)
    created_at = fields.DateTime(required=True, allow_none=False)
    edited_at = fields.DateTime(required=True, allow_none=True)
    crossposted_at = fields.DateTime(required=True, allow_none=True)
    published_at = fields.DateTime(required=True, allow_none=False)
    last_comment_at = fields.DateTime(required=True, allow_none=True)
    tag_list = fields.List(fields.Str, required=True, allow_none=True)
    tags = fields.Str(required=True, allow_none=True)
    user = fields.Nested(user_schema)
コード例 #5
0
from flask import Flask, request, jsonify

from models.user import User, db
from schemas.user_schema import UserSchema, ma

app = Flask(__name__)
db.init_app(app)
ma.init_app(app)

basedir = os.path.abspath(os.path.dirname(__file__))
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(
    basedir, 'crud.sqlite')

# db.create_all('__all__', app)

user_schema = UserSchema()
users_schema = UserSchema(many=True)


# endpoint to create new user
@app.route("/user", methods=["POST"])
def add_user():
    username = request.json['username']
    email = request.json['email']

    new_user = User(username, email)

    db.session.add(new_user)
    db.session.commit()

    return jsonify('{ok: ok}')
コード例 #6
0
from flask_restful import Resource
from flask import request

from models.user_model import UserModel

from schemas.user_schema import UserSchema

from marshmallow import ValidationError

user_schema = UserSchema()


class UserRegister(Resource):
    def post(self):
        try:
            user = user_schema.load(request.get_json())
        except ValidationError as err:
            return err.messages, 400

        if UserModel.find_by_username(user.username):
            return {"message": "User already exists"}, 400

        user.save_to_db()

        return {"message": "User created successfully"}, 201


class User(Resource):
    @classmethod
    def get(cls, user_id: int):
        user = UserModel.find_by_id(user_id)
コード例 #7
0
from collections import Counter

from flask_restful import Resource
from flask import request
from marshmallow import ValidationError
from werkzeug.security import safe_str_cmp
from flask_jwt_extended import create_access_token, create_refresh_token

from models.user_model import UserModel, UserRoleMapper
from schemas.user_schema import UserSchema

user_schema = UserSchema()
users_schema = UserSchema()


class UserManagement(Resource):
    def post(self):
        roles = []
        user_data = request.get_json()
        if UserModel.find_by_username(user_data["username"]):
            return {"message": "A user with that username already exists"}, 400

        roles_list = Counter(user_data['roles'])

        for _id in roles_list:
            roles.append(UserRoleMapper(role_id=_id))

        user = UserModel(roles=roles)
        user.save_to_db()

        return {"message": "User created successfully."}, 201
コード例 #8
0
def get_user_login(db: Session, document:str):
    user = db.query(User).filter_by(document = document).first()
    return UserSchema.from_orm(user)