Example #1
0
    def post(self):
        id = request.form.get('id')
        pw = request.form.get('pw')

        if User.objects(id=id):
            return '', 204
        else:
            User(id=id, pw=pw).save()
            return '', 201
Example #2
0
    def post(self):
        id = str(current_identity)
        title = request.form.get('title')
        content = request.form.get('content')

        PostCol(title=title,
                content=content,
                author=User(id,
                            User.objects(id=id).first().pw)).save()

        return '', 201
Example #3
0
    async def get_all_user_by_lang(self, lang_id: int) -> List[User]:
        sql = f"""
        {User.__select__} where "lang_id" = $1
        """

        return [
            User(**acc) for acc in await self.connection.fetch(
                sql,
                lang_id,
            )
        ]
Example #4
0
 def post(self):
     try:
         body = request.get_json()
         user = User(**body)
         user.hash_password()
         user.save()
         id = user.id
         return {'id': str(id)}, 201
     except FieldDoesNotExist:
         raise SchemaValidationError
     except NotUniqueError:
         raise EmailAlreadyExistsError
     except Exception:
         raise InternalServerError
Example #5
0
    def test_create_user(self):
        """ Create user in db
        Should: return save user in db """

        user = User(username='******',
                    email="*****@*****.**",
                    password="******",
                    provider="Tutubo")
        user.save()

        fresh_user = User.objects().first()
        assert fresh_user.username == 'oli'
        assert fresh_user.email == '*****@*****.**'
        assert fresh_user.password == '123'
        assert fresh_user.provider == 'Tutubo'
Example #6
0
def user(*args, **kwargs):
    args = current_app.config['args']
    headers = current_app.config['headers']

    response = Response()
    route_params = request.view_args
    get_params = request.args.to_dict(flat=False)
    if request.method in ['POST', 'PUT', 'DELETE']:
        body = request.json

    message = []
    data = None
    error = None
    try:
        if request.method == 'POST':
            data = User(**body)
            data.save()
            data = data.to_mongo()
        elif request.method == 'GET':
            data = [obj.to_mongo() for obj in User.objects]
        elif request.method == 'PUT':
            _id = route_params['user_id']
            data = User.objects(id=bson.ObjectId(_id))
            for attr in [
                    'first_name', 'last_name', 'email', 'password',
                    'authorization'
            ]:
                if body.get(attr) is not None:
                    setattr(data, attr, body[attr])
            data.save()
            data = data.to_mongo()
        elif request.method == 'DELETE':
            _id = route_params['user_id']
            data = User.objects(id=bson.ObjectId(_id))
            data.delete()
        elif request.method == 'OPTIONS':
            pass
        else:
            pass

    except Exception as e:
        error = AugmentedException(e).to_dict()
        LOGGER.error('', exc_info=True)

    response = jsonify(message=message, data=data, error=error)
    response = add_headers(response, headers=headers)
    LOGGER.warning(vars(response))
    return response
Example #7
0
    def user_oauth_login():
        body = request.get_json()
        if (not body or not OAUTH_FIELD in body.keys()):
            return error_response(400, 'Cant verify login credentials')

        try:
            idinfo = id_token.verify_oauth2_token(
                body['idToken'],
                requests.Request()) if not app.config['TESTING'] else {
                    'email': body['idToken']
                }
            email = idinfo['email']
            user = User.objects(email=email)
            if not user:
                username = email.split('@')[0]
                username = "******" + username
                photo = body['photoURL'] if 'photoURL' in body else None
                user = User(email=email,
                            profile_pic=photo,
                            username=username,
                            provider="Google").save()
            else:
                user = user[0]
                if user.is_blocked:
                    return error_response(401, "User is blocked")

            token = jwt.encode(
                {
                    'email': user.email,
                    'exp':
                    datetime.datetime.utcnow() + datetime.timedelta(days=7)
                },
                app.config['SECRET_KEY'],
                algorithm=ENCODING_ALGORITHM)
            return jsonify({
                'token': token.decode('UTF-8'),
                "user": user.serialize()
            })
        except ValueError as err:
            return error_response(401,
                                  'Cant verify Google credentials ' + str(err))
Example #8
0
def register():
    print(request)
    email, password, fullname = dict(request.get_json(force=True)).values()
    print(email, password, fullname)
    if email == "" or password == "" or fullname == "":
        abort(400, msg="이메일, 패스워드, 이름은 NULL일 수 없습니다.")
    elif not email_pattern.match(email):
        abort(400, msg="이메일 형식이 올바르지 않습니다.")
    elif not password_pattern.match(password):
        abort(400, msg="비밀번호 형식이 올바르지 않습니다.")
    elif name_pattern.match(fullname):
        abort(400, msg="이름에 특수문자나 숫자가 포함될 수 없습니다.")
    elif User.query.filter_by(email=email).first():
        return jsonify(status="fail", msg=f"{email}는 이미 등록된 계정입니다."), 400

    user = User(email, password, fullname)
    db.session.add(user)
    db.session.commit()

    profile = Profile(user.id, user.fullname)
    db.session.add(profile)
    db.session.commit()

    education = Education(user.id)
    db.session.add(education)
    db.session.commit()

    awards = Awards(user.id)
    db.session.add(awards)
    db.session.commit()

    project = Project(user.id)
    db.session.add(project)
    db.session.commit()

    certificate = Certificate(user.id)
    db.session.add(certificate)
    db.session.commit()
    return jsonify(status="success",
                   message=f"Successfully Registered: {email}")
Example #9
0
def createUser():
    try:
        data = request.form
        for key in getModelKeys(User):
            if not key in data:
                raise AssertionError(f'Property {key} is missing')

        user = User(email=data['email'])
        user.setPassword(data['password'])
        session.add(user)

        session.commit()
        session.refresh(user)

        return jsonify(user=JSONEncoder(user)), 201

    except AssertionError as err:
        return jsonify({"message": str(err)}), 400

    except Exception as err:
        print(err)
        return jsonify({"message": str(err)}), 500
Example #10
0
    def post(self):
        """
        Add a new user
        """
        body = request.get_json()

        if User.find_by_username(body['username']):
            return custom_response(
                401, 'User {} already exists'.format(body['username']))

        if (body['username'] == '' or body['password'] == ''
                or body['password'] != body['confirm_password']
                or body['full_name'] == '' or body['gender'] > 1
                or body['date_of_birth'] == ''):
            return custom_response(400, "Invalid parameters")

        user = User(
            username=body['username'],
            password=User.generate_hash(body['password']),
            role=USER_ROLE['user'],
            full_name=body['full_name'],
            gender=body['gender'],
            date_of_birth=body['date_of_birth'],
        )
        try:
            user.save()
            access_token = create_access_token(identity=create_identity(user))
            refresh_token = create_refresh_token(
                identity=create_identity(user))
            return custom_response(200,
                                   'User {} was created'.format(user.username),
                                   {
                                       'access_token': access_token,
                                       'refresh_token': refresh_token
                                   })
        except:
            return custom_response(500, 'Something went wrong')
Example #11
0
    def register_user():
        body = request.get_json()
        if (not body or not Counter(REGISTER_FIELDS) == Counter(body.keys())
                or len(body['password']) == 0):
            app.logger.debug(
                " Registration || FAILURE || Bad Request --> %s %s", body,
                request.content_length, request.content_type)
            return error_response(400, 'Cant verify register')

        hashed_password = generate_password_hash(body['password'],
                                                 method='sha256')
        try:
            user = User(email=body['email'],
                        password=hashed_password,
                        username=body['username'],
                        provider="Tutubo").save()
            id = user.id
            response = jsonify({'id': id})
            response.status_code = 200
            return response
        except NotUniqueError:
            return error_response(409, 'User already registered')
        except ValidationError:
            return error_response(400, 'Invalid email address')
Example #12
0
 def extract_data(result):
     return User(id=result['id'],
                 username=result['username'],
                 password=result['password'])
Example #13
0
def login():
    connection = ConnectionManager().get_db_connection()
    user_id = UserDAO(connection).read(
        User(username=request.args.get('username', None),
             password=request.args.get('password', None)))
    return json.dumps({'user_id': user_id})
Example #14
0
def register():
    connection = ConnectionManager().get_db_connection()
    user_id = UserDAO(connection).create_or_update(
        User(username=request.form['username'],
             password=request.form['password']))
    return json.dumps({'user_id': user_id})
Example #15
0
    async def get_user(self, user_id: int) -> Optional[User]:
        sql = f'{User.__select__} where "id" = $1'

        raw = await self.connection.fetchrow(sql, user_id,)
        if (raw):
            return User(**raw)