Ejemplo n.º 1
0
    def post(self):
        data = LoginUser.parser.parse_args()

        if (UserModel.find_by_username(data['email'], data['password'])):
            user = UserModel.find_by_username(data['email'], data['password'])
            return user.json()

        return {'message': 'Invalid login credential'}
Ejemplo n.º 2
0
    def test_crud(self):
        with self.app_context():
            user = UserModel('test-user', '12345')

            self.assertIsNone(
                UserModel.find_by_username('test-user'),
                "Found a user with username {}, but expected not to.".format(
                    user.username))
            self.assertIsNone(UserModel.find_by_id(1))
            user.save_to_db()

            self.assertIsNotNone(UserModel.find_by_username('test-user'))
            self.assertIsNotNone(UserModel.find_by_id(1))
Ejemplo n.º 3
0
    def post(self):

        data = parser.parse_args()
        username = data['username']

        # Searching user by username
        current_user = UserModel.find_by_username(username)

        # user does not exists
        if not current_user:

            return jsonify({'message': f'User {username} doesn\'t exist'})

        # user exists, comparing password and hash
        if UserModel.verify_hash(data['password'], current_user.password):

            # generating access token and refresh token
            access_token = create_access_token(
                identity=username, expires_delta=timedelta(hours=2))
            refresh_token = create_refresh_token(identity=username)

            return jsonify({
                'message': f'Logged in as {username}',
                'access_token': access_token,
                'refresh_token': refresh_token
            })

        else:

            return jsonify({'message': "Wrong credentials"})
Ejemplo n.º 4
0
 def post():
     user = UserRegisterResource.parser.parse_args()
     if UserModel.find_by_username(user.username):
         abort(409, message="User Already Exists")
     new_user = UserModel(**user)
     new_user.add_user()
     return {'message': f"added {new_user.username}"}, 201
Ejemplo n.º 5
0
    def put(self, id_profile):
        data = parser.parse_args()
        fullName = data['fullName']

        username = get_jwt_identity()
        current_user = UserModel.find_by_username(username)

        if not current_user:
            return make_response(jsonify({'message': f'no user has that jwt'}),
                                 500)

        user_id = current_user.id

        profile_model = ProfileModel.query.filter_by(id=id_profile,
                                                     user_id=user_id).first()

        if not profile_model:
            return make_response(
                jsonify({
                    'message':
                    f'user does not own profile with id {id_profile}'
                }), 500)

        valid_data = ProfileModel.put(self, id_profile, fullName)

        if not valid_data:
            return make_response(jsonify({'message': f'Invalid data entered'}),
                                 500)
Ejemplo n.º 6
0
    def post(self):

        # get params from the request
        data = parser.parse_args()
        name = data['name']
        start_date = data['start_date']
        end_date = data['end_date']

        username = get_jwt_identity()

        current_user = UserModel.find_by_username(username)
        user_id = current_user.id
        program_model = ProgramModel.query.filter_by(user_id=user_id).first()

        # create model instance with the params
        new_program = ProgramModel(name=name,
                                   start_date=start_date,
                                   end_date=end_date,
                                   user_id=user_id)

        try:
            # save model instance to db
            new_program.save_to_db()
            return make_response(jsonify({'message': 'new program created'}),
                                 200)

        except:
            return make_response(jsonify({'message': 'something went wrong'}),
                                 500)
Ejemplo n.º 7
0
    def post(self):

        # get params from the request
        data = parser.parse_args()
        fullName = data['fullName']
        username = get_jwt_identity()

        current_user = UserModel.find_by_username(username)
        user_id = current_user.id
        profile_model = ProfileModel.query.filter_by(user_id=user_id).first()

        if profile_model:
            return make_response(
                jsonify(
                    {'message':
                     f'profile for user {username} already exists'}), 500)

        # create model instance with the params
        new_profile = ProfileModel(full_name=fullName, user_id=user_id)

        try:
            # save model instance to db
            new_profile.save_to_db()
            return make_response(jsonify({'message': 'new profile created'}),
                                 200)

        except:
            return make_response(jsonify({'message': 'something went wrong'}),
                                 500)
    def post(self):
        data = UserRegister.parser.parse_args()

        #       Check if user name is already present
        if UserModel.find_by_username(data['username']):
            return {
                "message": "A user with the given username already exists"
            }, 403

        # Check if list name is already present
        if TitlesModel.find_by_listname(listname=data['listname']):
            return {
                "message":
                "A list already exists with this name, please select a different list name."
            }, 403

    #   Check if correct admin key is supplied for admin role
        if data["role"] == "admin":
            if data["adminkey"] == None:
                return {"Message": "No admin code supplied for the admin"}, 401
            if UserModel.check_admin_code(data["adminkey"]) == False:
                return {"Message": "Invalid admin code"}, 401

#       Hash password before saving to DB
        o_hash = hashlib.new('ripemd160')
        o_hash.update(data["password"].encode("utf-8"))
        data["password"] = o_hash.hexdigest()

        #   Save new user to DB
        user = UserModel(**data)
        user.save_to_db()

        return {"message": "User created successfully."}, 201
Ejemplo n.º 9
0
    def put(self, id_program):
        data = parser.parse_args()
        name = data['name']
        start_date = data['start_date']
        end_date = data['end_date']

        username = get_jwt_identity()
        current_user = UserModel.find_by_username(username)

        if not current_user:
            return make_response(jsonify({'message': f'no user has that jwt'}),
                                 500)

        user_id = current_user.id

        program_model = ProgramModel.query.filter_by(id=id_program,
                                                     user_id=user_id).first()

        if not program_model:
            return make_response(
                jsonify({
                    'message':
                    f'user does not own program with id {id_program}'
                }), 500)

        ProgramModel.put(self, id_program, name, start_date, end_date)
        return {'message': f'Program updated'}
Ejemplo n.º 10
0
    def post(cls):
        try:
            user = user_schema.load(request.get_json())
        except ValidationError as err:
            return err.messages, 400

        if UserModel.find_by_username(user['username']):
            return {"msg": "User Already Exists"}, 400

        if UserModel.find_by_email(user['email']):
            return {"msg": "This email already has a registered account."}, 400

        new_user = UserModel(**request.get_json())
        try:
            new_user.register()
            print("User Registered...")
            token = generate_link_token(user['email'])
            UserModel.send_confirmation_email(token, user['email'],
                                              user['username'])
        except:
            return {'msg': "Error Performing Request!!"}, 500

        return {
            'msg':
            "Confirmation Link has been sent to you Email. Please Activate."
        }, 201
Ejemplo n.º 11
0
    def post(cls):
        data = user_schema.load(request.get_json())
        user = UserModel.find_by_username(data["username"])

        # !!! below is the same with the authentication used in JWT(app,authentication,identity)
        # !!! Only the active user can log in.
        if user and Hash_Password.check_pwd(data["password"], user.password):
            if not user.status == 'Active':
                return {'msg': "Please Activate your account."}, 300
            # !!! identity= is the same with the identity used in JWT(app,authentication,identity)
            access_token = create_access_token(
                identity=user.id, fresh=True,
                expires_delta=False)  # !!! Create Token for authentication
            refresh_token = create_refresh_token(
                user.id)  # !!! Refreshing token to extend authenticated period
            return {
                'id': user.id,
                'access_token': access_token,
                'refresh_token': refresh_token,
                'role': user.role,
                'username': user.username,
                'uuid': user.user_id,
                'email': user.email
            }, 200

        return {'msg': "Invalid Credentials!!!"}, 401
Ejemplo n.º 12
0
    def get(self, name):
        user = UserModel.find_by_username(name)

        if user:
            return user.json()

        return {'message': "User '{}' does not exist".format(name)}, 400
Ejemplo n.º 13
0
    def post(self):

        data = parser.parse_args()
        username = data['username']
        email = data['email']

        # Checking if  user already exist/created
        if UserModel.find_by_username(username):
            return {'message': f'User {username} already exists'}

        # create new user
        new_user = UserModel(username=username,
                             password=UserModel.generate_hash(
                                 data['password']),
                             email=email)

        # try:

        # Saving user in DB and Generating Access and Refresh token
        new_user.save_to_db()
        access_token = create_access_token(identity=username)
        refresh_token = create_refresh_token(identity=username)

        return make_response(
            jsonify({
                'message': f'User {username} was created',
                'access_token': access_token,
                'refresh_token': refresh_token
            }), 200)
Ejemplo n.º 14
0
 def post(self):
     user = UserRegisterResource.parser.parse_args()
     if UserModel.find_by_username(user.username):
         return {'message': 'user already exists'}, 409
     user = UserModel(**user)
     user.add_user()
     return {'message': 'user added'}, 201
Ejemplo n.º 15
0
 def post(self):
     data = self.parser.parse_args()
     user = UserModel.find_by_username(data['username'])
     if user and safe_str_cmp(user.password, data['password']):
         access_token = create_access_token(identity=user.id, fresh=True)
         return {'access_token': access_token}, 200
     return {'message': 'Invalid credentials'}, 401
Ejemplo n.º 16
0
def register():
	newUser = request.get_json()
	if UserModel.find_by_username(newUser['username']):
		return {'message':'Username already exists'}, 400
	user = UserModel(newUser['username'],hash_password(newUser['password']))
	user.save_to_db()
	return jsonify({'message':'User created successfully'})
Ejemplo n.º 17
0
 def post(self):
     newUser = UserRegister.parser.parse_args()
     if UserModel.find_by_username(newUser['username']):
         return {'message': 'Username already exists'}, 400
     user = UserModel(newUser['username'],
                      hash_password(newUser['password']), newUser['email'])
     user.save_to_db()
     return {'message': 'User created successfully'}
Ejemplo n.º 18
0
    def delete(self):
        user = UserRegisterResource.parser.parse_args()
        if UserModel.find_by_username(user.username):
            user = UserModel.query.filter_by(username=user.username)
            user.delete_user()
            return {'message': f"user removed"}, 204

        return {'message': f"user not found"}, 404
Ejemplo n.º 19
0
 def get(self, username):
     friends = FriendModel.find_by_username(username)
     if friends:
         you = [{
             "contact_name": UserModel.find_by_username(username).email
         }]
         return {'friends': you + [friend.json() for friend in friends]}
     else:
         return {'message': 'User not found'}, 404
Ejemplo n.º 20
0
 def post(cls):
     data = _global_parser.parse_args()
     user = UserModel.find_by_username(data['username'])
     if user and UserModel.verify_hash(data['password'], user.password):
         access_token = create_access_token(identity=user.id)
         return {
             'access_token': access_token
         }, 200
     return {"message": "Invalid credentials."}, 401
Ejemplo n.º 21
0
    def username(self):  # Return True only when passed field validate

        if UserModel.find_by_username(self.value):
            return jsonify({
                "message": False,
                "error": "User already exist in the database."
            })
        else:
            return jsonify({"message": True})
Ejemplo n.º 22
0
    def post(self):
        data = UserRegister.parser.parse_args()

        if UserModel.find_by_username(data['username']):
            return {'message': 'The username entered is already taken.'}, 400

        user = UserModel(**data)
        user.save_to_db()

        return {'message': 'User created successfully.'}, 201
Ejemplo n.º 23
0
    def post(self):
        data = UserRegister.parser.parse_args()

        if UserModel.find_by_username(data["username"]):
            return {"message": "A user with that username already exists"}, 400

        user = UserModel(**data)
        user.save_to_db()

        return {"message": "User created successfully"}, 201
Ejemplo n.º 24
0
    def post(self):
        data = self.parser.parse_args()

        if UserModel.find_by_username(data["username"]):
            return jsonify({"message": "User already exist in the database."})

        user = UserModel(**data)
        user.save_to_db()

        return jsonify({"message": "User created successfully."})
Ejemplo n.º 25
0
    def post(self):
        data = _parser.parse_args()

        if UserModel.find_by_username(data['username']):
            return {'message': 'That username is already registered'}, 400

        new_user = UserModel(**data)
        new_user.save_to_db()

        return {'message': 'User created successfully'}, 201
Ejemplo n.º 26
0
    def post(self):
        data = RegisterUsers.parser.parse_args()

        if UserModel.find_by_username(data['username']):
            return {"message": "username already taken"}, 400

        user = UserModel(**data)
        user.save_to_db()

        return {"message": "User registered successfully"}, 201  # created
Ejemplo n.º 27
0
    def post(self):
        data = UserRegister.parser.parse_args()

        # model find by name
        if UserModel.find_by_username(data['username']):
            return {'message': 'User already exists'}, 400

        user = UserModel(**data)
        user.save_to_db()

        return {"message": "User created successfully."}, 201
Ejemplo n.º 28
0
def authenticate(username, password):
    """
  Functions that gets called when user hits the /auth endpoint
  with their username and password
  :param username:
  :param password:
  :return: A userModel object if authentication was successfull None otherwise
  """
    user = UserModel.find_by_username(username)
    if user and safe_str_cmp(user.password, password):
        return user
Ejemplo n.º 29
0
    def put(self, name):
        data = UserRegister.parser.parse_args()

        user = UserModel.find_by_username(name)

        if user:
            user.username = data['username']
        else:
            user = UserModel(**data)
        user.save_to_db()
        return user.json()
Ejemplo n.º 30
0
 def post(self):
     params = self.parser.parse_args()
     username = params["username"]
     if UserModel.find_by_username(username):
         return {"message": f"მომხმარებელი {username} უკვე არსებობს"}, 400
     password = params["password"]
     user = UserModel(username, password)
     try:
         user.save_to_db()
     except:
         return {"message": "ინფორმაციის შენახვისას დაფიქსირდა შეცდომა"}, 500
     return {"message": f"მომხმარებელი {username} დარეგისტრირებულია"}, 201