Exemple #1
0
    def get(cls):
        response = github.authorized_response()
        if response is None or response.get("access_token") is None:
            error_response = {
                "error": request.args["error"],
                "error_description": request.args["error_description"]
            }
            return error_response

        g.access_token = response["access_token"]  #access token is made global
        github_user = github.get("user")  #user information object
        github_username = github_user.data["login"]  #get github users username
        github_email = github_user.data["email"]

        #if UserModel.find_by_username(github_username):
        #    return {"msg": "User with username exists"}

        #add user to database
        user = UserModel(username=github_username,
                         password=GithubAuthorize.generate_sample_password(),
                         activated=True,
                         email=github_email)
        user.save_to_db()

        #create jwt tokens
        access_token = create_access_token(identity=user.id, fresh=True)
        refresh_token = create_refresh_token(user.id)

        return {
            "access_token": access_token,
            "refresh_token": refresh_token
        }, 200
def auth(username, password):
    user = UserModel.find_by_username(username)
    password = password.encode('utf-8')
    print(password)

    if UserModel.check_password(username, password):
        return user
    else:
        return None
Exemple #3
0
    def post(self):
        try:
            data = user_schema.load(request.get_json())
        except ValidationError as err:
            return err.messages,400
        username = data.username
        passwd = data.password
        email = data.email

        print(username,passwd,email)
        hashed = bcrypt.hashpw(passwd.encode('utf-8'),bcrypt.gensalt())

        if UserModel.find_by_username(username):
            return {"msg": "user with username exists"}
        
        if UserModel.find_by_email(email):
            return {"msg": "user with email id  exists"} 
        
        user = UserModel(username,hashed,email)
        user.save_to_db()

        user.generate_mail()     #send emails to new users

        return {
            "msg": "user saved successfully"
        }
Exemple #4
0
 def post(self) -> object:
     data = user_parser.parse_args()
     user = UserModel.find_by_username(data["username"])
     if user:
         return {"message": "User already exists"}, 400
     elif len(data["username"]) < 5:
         return {"message": "Username must be 5 characters or longer"}, 400
     elif len(data["password"]) < 6:
         return {
             "message": "Password must be more than 6 characters long"
         }, 400
     else:
         user = UserModel(data["username"], data["password"])
         user.save_to_db()
         return {"message": "User created successfully"}, 201
Exemple #5
0
 def get(cls,user_id):
     user = UserModel.find_by_id(user_id)
     if not user:
         return {"msg": "User not found"},404
     user.delete_from_db()
     
     return {"msg": "user deleted successfully"}
Exemple #6
0
 def post(self):
     params = _user_parser.parse_args()
     user = UserModel.find_by_username(params['username'])
     if user:
         return {"msg": f"{user.username} already exists"}, 400
     user_model = UserModel(**params)
     try:
         user_model.save()
     except:
         return {"msg": f"{params['username']} save fails"}, 400
     data = {
         'id': user_model.id,
         'username': user_model.username,
         'room_private': user_model.room_private,
     }
     return data, 200
Exemple #7
0
 def get(self) -> object:
     user_id = get_jwt_identity()
     user = UserModel.find_by_id(user_id)
     if user:
         return user.json()
     else:
         return {"message": "User not found"}, 404
Exemple #8
0
 def get(self):
     sets = get_online_uids()
     if sets is None:
         return {}, 200
     result = []
     for uid in sets:
         result.append(UserModel.find_by_id(uid).to_json())
     return jsonify(result), 200
Exemple #9
0
 def get(self):
     params = _user_parser.parse_args()
     page = params['page']
     per_page = params['per_page']
     print('Accounts--get----{}----{}'.format(page, per_page))
     items = UserModel.find_paginate(**params).items
     result = []
     for item in items:
         result.append(item.to_json())
     return jsonify(result), 200
Exemple #10
0
def on_disconnect():
    sid = request.sid
    uid = get_uid_with_sid(sid)
    remove_online_uids(uid)
    user = UserModel.find_by_id(uid)
    print('Client disconnected--{}--{}--{}'.format(sid, uid, user.to_json()))
    message = Message('disconnect_broadcast', MESSAGE_TYPE.MESSAGE_BROADCAST.value, False,
                      int(round(time.time() * 1000)), user.room_private, user.room_private, uid, uid)
    message.save()
    async_emit_msg.delay('disconnect_broadcast', message.to_json(), broadcast=True)
Exemple #11
0
    def get(self,token):
        try:
            serializer = URLSafeTimedSerializer("secrettoken")
            email = serializer.loads(token,salt="flask-email-confirmation")["email"]
            user = UserModel.find_by_email(email)
            if not user:
                return "<h1>Invalid User</h1>"
            user.activated = True 
            user.save_to_db()

        except:
            return "<h1>Token is expired</h1>"
        return "<h1>Token Verified</h1>"
Exemple #12
0
    def post(self):
        try:
            data = user_schema.load(request.get_json())
        except ValidationError as err:
            return err.messages,400
        username = data.username
        email = data.email
        password = data.password

        user = UserModel.find_by_username(username)

        if user and UserModel.check_password(username,password):
            if user.activated:
                access_token = create_access_token(identity=user.id,fresh=True)
                refresh_token = create_refresh_token(user.id)

                return {
                    "access_token": access_token,
                    "refresh_token": refresh_token
                },200
            return {"msg": "User has not yet been activated"},401
        
        return {"msg": "wrong creds"},401
    def delete(self):
        user = UserModel.find_by_id(get_jwt_identity())

        if not user.seller:
            return {"msg": "User is not a seller"}, 403

        data = request.get_json()
        name = data["name"]

        store = StoreModel.find_by_name(name)
        if store:
            store.delete_from_db()
        else:
            return {"msg": "Store does not exist"}, 400
        return {"msg": "Store deleted"}
Exemple #14
0
    def post(self) -> object:
        data = user_parser.parse_args()

        user = UserModel.find_by_username(data["username"])

        # this is what the `authenticate()` function did in security.py
        if user and argon2.verify(data["password"], user.password):
            # identity= is what the identity()
            # function did in security.py—now stored in the JWT
            access_token = create_access_token(identity=user.id, fresh=True)
            refresh_token = create_refresh_token(user.id)
            return {
                "access_token": access_token,
                "refresh_token": refresh_token
            }, 200

        return {"message": "Invalid Credentials!"}, 401
Exemple #15
0
 def post(self):
     params = _user_parser.parse_args()
     user = UserModel.find_by_username(params['username'])
     if user and safe_str_cmp(user.password, params['password']):
         access_token = create_access_token(identity=user.id, fresh=True)
         refresh_token = create_refresh_token(identity=user.id)
         data = {
             'access_token': access_token,
             'refresh_token': refresh_token,
             'id': user.id,
             'username': user.username,
             'room_private': user.room_private,
         }
         return data, 200
     return {
         "msg":
         f"{params['username']} with password {params['password']} login fails"
     }, 400
    def post(self):
        user = UserModel.find_by_id(get_jwt_identity())

        if not user.seller:
            return {"msg": "User is not a seller"}, 403

        data = request.get_json()
        name = data["name"]

        store = StoreModel.find_by_name(name)

        if store:
            return {"msg": "Store exists already"}, 400

        store = StoreModel(name=name)
        try:
            store.save_to_db()
        except:
            return {"msg": "Error occured"}, 500

        return {"msg": "Added the store"}, 201
def identity(payload):
    user_id = payload['identity']
    return UserModel.find_by_id(user_id)
Exemple #18
0
 def get(cls,user_id):
     user = UserModel.find_by_id(user_id)
     if not user:
         return {"msg": "User not found"},404
     
     return user_schema.dump(user),200