示例#1
0
    def put(self, username):
        data = UserInfo.parser.parse_args()

        user = UserModel.find_by_username(username)

        if user:
            if data['password']:
                data['password'] = UserModel.get_password_hash(
                    data['password'])
                user.password = data['password']
            if data['first_name']:
                user.first_name = data['first_name']
            if data['last_name']:
                user.last_name = data['last_name']
            if data['active']:
                user.active = data['active']
        else:
            if data['password']:
                data['password'] = UserModel.get_password_hash(
                    data['password'])
            user = UserModel(username, data['password'], data['first_name'],
                             data['last_name'], data['active'])

        user.save_to_db()

        return user.json()
示例#2
0
def signin():
    """Signin"""
    form = SigninEmailForm()
    from app.models.user import User as UserModel

    if form.validate_on_submit():
        email = form.email.data
        password = form.password.data

        user = User(email, email)

        new_user = UserModel.query.filter_by(email=email).first()
        if new_user is None:
            new_user = UserModel(email=email)
            new_user.set_password(password)
            DB.session.add(new_user)
            DB.session.commit()

        if new_user.check_password(password) is False:
            form.password.errors.append('Wrong password or you forgot it.')
            return render_template('signin.html', form=form)

        login_user(user, remember=True)

        resp = make_response(redirect(url_for('chat'), code=307))

        return resp

    return render_template('signin.html', form=form)
示例#3
0
    def post(self):
        parser = reqparse.RequestParser()
        parser.add_argument('email', required=True)
        parser.add_argument('password', required=True)
        parser.add_argument('first_name')
        parser.add_argument('last_name')
        args = parser.parse_args()

        user = UserModel(email=args['email'],
                         password=args['password'],
                         first_name=args['first_name'],
                         last_name=args['last_name'])
        db.session.add(user)
        try:
            db.session.commit()
        except Exception as e:
            match = duplicate_pattern.search(e.message)
            if match:
                db.session.rollback()

                groups = {
                    'value': match.group('value'),
                    'filed': match.group('filed')
                }
                abort(409,
                      message="duplicate value '{value}' for key '{filed}'".
                      format(**groups),
                      **groups)

        _send_activate_email(user.email)

        return {'id': user.id}, 201
示例#4
0
    def test_user_json(self):
        with self.app_context():
            # to test user we need to create user right
            userright = UserRightModel('test right')
            userright.save_to_db()

            user = UserModel('*****@*****.**', 'abcd')
            user.save_to_db()

            expected = {
                'id': 1,
                'email': '*****@*****.**',
                'right_id': 1,
                'right': {
                    'id': 1,
                    'right': 'test right'
                },
                'username': '',
                'position': '',
                'hide': False
            }

            self.assertEqual(
                user.json(), expected,
                f"The JSON export of the user is incorrect. Received {user.json()}, expected {expected}"
            )
 def test_user(self):
     u = UserModel(firstname="dodo",
                   lastname="duck",
                   username="******",
                   email="*****@*****.**",
                   password="******")
     self.assertEqual(u.username, "dodo")
示例#6
0
def login_by_google_callback():
    """Github OAuth 回调
    """
    code, state, info = OAuthSignIn.get_provider('google').callback()
    if code is None:
        return 'google 授权失败'

    if current_user.is_authenticated:
        if _get_user_oauth_state('google') != state:
            return '错误的用户,授权失败'

        user = UserModel.query.filter_by(google_id=info.get('id')).first()
        if user is not None and user.id != current_user.id:
            return ' google 帐户已经被绑定过了'

        current_user.google_id = info.get('id')
        current_user.google_email = info.get('email')
        current_user.google_name = info.get('name')

        db.session.commit()

        return '绑定成功'

    else:
        user = UserModel.query.filter_by(google_id=info.get('id')).first()
        if user is None:
            user = UserModel(
                google_id=info.get('id'),
                google_email=info.get('email'),
                google_name=info.get('name'),
            )
            db.session.add(user)
        _login_user(user)

        return '登录成功'
示例#7
0
    def test_user_list(self):
        with self.app() as c:
            with self.app_context():
                user = UserModel("*****@*****.**", "password")
                user.save_to_db()

                r = c.get('users')

                expected = {
                    "users": [{
                        "id": 1,
                        "email": "*****@*****.**",
                        "right_id": 1,
                        "right": {
                            "id": 1,
                            "right": "blocked"
                        },
                        "username": "",
                        "position": "",
                        "hide": False
                    }]
                }

                self.assertEqual(r.status_code, 200)
                self.assertDictEqual(d1=expected, d2=json.loads(r.data))
def create():
    if not current_user.is_admin:
        return 'forbidden access'

    if request.method == 'GET':
        return render_template('user/create.html')
    else:
        name = request.form['name']
        email = request.form['email']
        password = request.form['password']

        raw_password = hashlib.sha256(password.encode()).hexdigest()
        hashed_password = bcrypt.hashpw(raw_password.encode(),
                                        bcrypt.gensalt())

        admin = UserModel(name=name,
                          email=email,
                          password=hashed_password,
                          is_admin=False)

        try:
            admin.insert()
            db.session.commit()
        except:
            db.session.rollback()
            message = 'Error while inserting user'

        message = 'User successfully created'
        return render_template('user/create.html', message=message)
示例#9
0
    def post(self):
        data = User.parser.parse_args()
        first_name = data['first_name']
        last_name = data['last_name']
        email = data['email']
        password = data['password']
        if UserModel.find_by_email(email):
            return {
                'result': 'Email {} is already registered'.format(email)
            }, 400

        user = UserModel(userid=str(uuid.uuid1()),
                         first_name=first_name,
                         last_name=last_name,
                         email=email,
                         password=password)
        user.set_password()

        try:
            user.save_to_db()
            return user.json()
        except Exception as err:
            return {
                'result':
                'There was an error while registering your email {}'.format(
                    email)
            }, 500
示例#10
0
    def post(self):
        data = EmployeeController.parser.parse_args()
        username = data['username']
        email = data['email']
        if (UserModel.find_by_username(username)
                or UserModel.find_by_email(email)):
            return {'message': "User already exists."}, 400
        # Because only admin can create employee
        admin_user = AdminModel.find_by_user_id(current_identity.id)
        if not admin_user:
            abort(403,
                  message="Please use admin or ask admin to crete company.")

        # Create a new Employee user
        employee = EmployeeModel(isAdmin=data['isAdmin'])
        user_data = data
        del user_data['isAdmin']
        user = UserModel(**user_data)
        user = user.hash_password()
        user.employee_id = employee
        employee.user_id = user

        # save the database
        try:
            db.session.add(user)
            db.session.add(employee)
            db.session.commit()
        except (ArgumentError, DataError):
            abort(500,
                  message="Server internal error due to invalid argument.")

        return employee.get_employee(user), 201
示例#11
0
def check_session(*args, **kwargs):
    from app.models.session import Session
    from app.models.user import UserModel
    g.user = None
    header = current_app.config.get("SESSION_HEADER")
    session_id = request.headers.get(header)
    session = Session()
    session_data = session.read(session_id)
    if session_data:
        g.user = UserModel(session_id)
        g.user.load()
    if request.endpoint in ["session", "status"]:
        pass
    elif request.method == "POST" and request.endpoint == "user":
        if not validate_session(session_id):
            abort(403)
    else:
        if not validate_session(session_id):
            abort(403)
        if request.method in ["POST", "PUT", "PATCH", "DELETE"]:
            if request.endpoint == "auth":
                pass
            elif not g.user or not g.user.get_id():
                print("Request denied (no auth)", request.endpoint)
                abort(403)
    g.session_id = session_id
示例#12
0
 def create_user(self, first_name, last_name, email_address, password):
     user = UserModel(first_name=first_name,
                      last_name=last_name,
                      email_address=email_address,
                      password=password)
     user.save()
     return user
示例#13
0
 def put(cls, user_id):
     data = request.get_json()
     create_error = UserSchema().validate(data)
     update_error = UserUpdateSchema().validate(data)
     if update_error:
         return {'message': update_error}, 400
     if data.get('password', None):
         data['password'] = bcrypt.generate_password_hash(
             data['password'], 10)
     user_by_id = UserModel.get_by_id(user_id)
     if user_by_id:
         try:
             UserModel.update_by_id(user_id, data)
             return {'message': 'user was updated'}, 200
         except IntegrityError as err:
             return {'message': err.args}, 400
     if create_error:
         return {'message': create_error}, 400
     user = UserModel(**data)
     if UserModel.get_by_email(user.email):
         return {
             'message': f'User with email {user.email} already exist'
         }, 400
     user.password = bcrypt.generate_password_hash(user.password)
     user.save()
     return {'message': 'User was created'}, 201
示例#14
0
    def post(self):
        '''
        유저 회원가입
        '''
        id = request.json['id']
        pw = request.json['pw']
        pw_check = request.json['pw_check']
        name = request.json['name']

        if not pw == pw_check:
            abort(406)

        user = UserModel.objects(id=id).first()

        if user is not None:
            abort(409)

        UserModel(
            id=id,
            pw=pw,
            name=name,
            level=1,
            exp=0,
        ).save()

        return '', 201
示例#15
0
    def test_create_user(self):
        user = UserModel('*****@*****.**', 'abcd')

        self.assertEqual(user.email, '*****@*****.**',
                         "The name of the user after creation does not equal the constructor argument")

        self.assertEqual(user.password, 'abcd',
                         "The password of the user after creation does not equal the constructor argument")
示例#16
0
def user_loader(_login):

    from app.models.user import User as UserModel

    tmp = db.find_one("USERS", "login", _login)
    if tmp:
        return UserModel(tmp)
    return None
示例#17
0
 def _handle_regular_user(self, data):
     session_model = Session()
     session_id = g.get("session_id", None)
     model = UserModel(session_id)
     user = model.create(data)
     if user:
         session_model.update(session_id, user_id=user.id)
         return user
     return None
示例#18
0
    def post(self):
        data = UserRegister.parser.parse_args()

        if UserModel.find_by_username(data["username"]):
            return {"message": "Error: username already exists"}, 409

        user = UserModel(**data)
        user.save()
        return {"message": "User registered successfully"}, 201
示例#19
0
def insert_test_data():
    for data in user_data:
        UserModel(**data).save()

    for data in category_data:
        CategoryModel(**data).save()

    for data in item_data:
        ItemModel(**data).save()
示例#20
0
文件: user.py 项目: mcptr/bbone-js-py
    def validate_username(self, data):
        username = data.get("username")
        if username and len(username) < 2:
            raise ValidationError(
                "Username must be at least 2 characters long", "username")

        model = UserModel(None)
        if not data.get("social_uid") and model.username_exists(username):
            raise ValidationError("Username already taken", "username")
示例#21
0
    def post(self):
        data = UserRegister.parser.parse_args()

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

        user = UserModel(**data)  ## unpack the data, because its a dictionary
        user.save_to_db()

        return {"message": "User created successfully."}, 201
示例#22
0
    def post(self):
        """
        정보 등록
        """
        payload = request.json
        uuid = str(uuid4())

        user = UserModel(uuid=uuid, **payload).save()
        FriendModel(user=user).save()
        return self.unicode_safe_json_dumps({'user_id': uuid}, 201)
示例#23
0
def create_tables():
    db.create_all()
    db.session.commit()
    from app.models.user import UserModel
    if not UserModel.find_by_username("admin"):
        UserModel(username="******",
                  password="******",
                  firstName="admin",
                  lastName="admin",
                  phoneNumber="123467890").save_to_db()
示例#24
0
    def post(self):
        data = UserRegister.parser.parse_args()

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

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

        return {'message': 'User created successfully'}, 201
示例#25
0
def init_db():
    user1 = UserModel('Test User1', 'testuser1', 'testpassword123',
                      '*****@*****.**')
    user2 = UserModel('Test User2', 'testuser2', 'testpassword123',
                      '*****@*****.**')
    category1 = CategoryModel('Category 1', 'Test category number 1')
    category2 = CategoryModel('Category 2', 'Test category number 2')
    item1 = ItemModel('Item 1', 'Test item number 1', 10, 1, 1)
    item2 = ItemModel('Item 2', 'Test item number 2', 20, 1, 1)
    user1.save_to_db()
    user2.save_to_db()
    category1.save_to_db()
    category2.save_to_db()
    item1.save_to_db()
    item2.save_to_db()

    yield db

    db.session.close()
    db.drop_all()
示例#26
0
    def test_crud(self):
        with self.app_context():
            user = UserModel('test', 'abcd')

            self.assertIsNone(UserModel.find_by_username('test'))
            self.assertIsNone(UserModel.find_by_id(1))

            user.save_to_db()

            self.assertIsNotNone(UserModel.find_by_username('test'))
            self.assertIsNotNone(UserModel.find_by_id(1))
示例#27
0
def register(data):
    """A new user sends username & password to register."""

    # check if username exists
    if UserModel.query.filter_by(username=data['username']).first():
        raise BadRequest('Username existed.')

    # save user's data & response a successful message
    user = UserModel(**data)
    user.save_to_db()
    return jsonify(UserSchema(exclude=("password",)).dump(user)), 201
示例#28
0
    def test_create_user(self):
        user = UserModel(USER_NAME, PASSWORD)

        self.assertEqual(
            user.username, USER_NAME,
            "The name of the user after creation does not equal the constructor argument."
        )
        self.assertEqual(
            user.password, PASSWORD,
            "The password of the user after creation does not equal the constructor argument."
        )
示例#29
0
 def post(self):
     body = RequestParser().get_body_users_args()
     user = UserModel.find_user_by_login(body['login'])
     if user:
         return {'message': 'User %s already exists' % body['login']}, 422
     new_user = UserModel(**body)
     try:
         new_user.save_user()
     except:
         return {'message': 'cannot save user, internal server error'}, 500
     return new_user.json(), 201
示例#30
0
    def post(self):
        data = _user_parser.parse_args()
        if UserModel.find_by_email(data['email']):
            return {
                'message': 'A user with that username already exists.'
            }, 400

        user = UserModel(data['email'], data['password'])
        user.save_to_db()

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