Пример #1
0
    def post(self, *args, **kwargs):
        notif_token = self.get_argument('notification_token', None)
        if not notif_token:
            raise InvalidInput('notification_token cannot be empty')

        user_model = UserModel()
        user_model.update_notification_token_for_user(notif_token, self.get_current_session())
        view = JsonView().render()
        self.finish(view)
Пример #2
0
 def delete(self, uid):
     """
     删除用户
     :return:
     """
     users = UserModel.find_by_id(uid)
     if not users:
         return dict(code=404, msg='not found', data=None)
     else:
         UserModel.delete(uid)
         return dict(code=200, msg='success', data=None)
Пример #3
0
def add_user():
    error = None
    form = CreateUserForm()
    if form.validate_on_submit():
        try:
            UserModel.save(username=request.form['username'], password=request.form['password'])
        except Exception, e:
            error = u"そのユーザ名は登録できません"
        else:
            flash(u"登録が完了しました")
            return redirect(url_for('index'))
Пример #4
0
def add_user():
    error = None
    form = CreateUserForm()
    if form.validate_on_submit():
        try:
            UserModel.save(username=request.form['username'],
                           password=request.form['password'])
        except Exception, e:
            error = u"そのユーザ名は登録できません"
        else:
            flash(u"登録が完了しました")
            return redirect(url_for('index'))
Пример #5
0
 def post(self):
     super(UserApi, self).post()
     code = 0
     value_list = self.get_form_data()
     userinfo = dict(zip(self.cloumn, value_list))
     userinfo['password'] = request.form.get('password')
     user = UserModel(**userinfo)
     user.save()
     if not user.success:
         return self.render_json(code=1003)
     self.log(info=userinfo['name'])
     return self.render_json()
Пример #6
0
    def post(self, *args, **kwargs):
        email = self.get_argument('user_email', None)
        if not email:
            raise InvalidInput('user_email cannot be empty')

        user_model = UserModel()
        user_id = user_model.get_user_id_from_email(email)
        if not user_id:
            user_id = user_model.create_user_in_db(email)

        session = user_model.create_session(user_id)
        view = JsonView({'session': session}).render()
        self.finish(view)
Пример #7
0
    def post(self, *args, **kwargs):
        self.set_header("Access-Control-Allow-Origin", "http://getpixelbots.com")
        self.set_header("Access-Control-Allow-Credentials", 'true')
        email = self.get_argument('email', None)
        if not email:
            raise InvalidInput('email cannot be empty')

        if not re.match(r'[^@]+@[^@]+\.[^@]+', email):
            raise  InvalidInput('email is not valid')

        user_model = UserModel();
        user_model.insert_subscription_invite(email)
        view = JsonView()
        self.finish(view.render())
Пример #8
0
    def authenticate_credentials(self, token):
        try:
            payload = jwt.decode(token, "SECRET_KEY")
            SessionModel.objects(jwt_token=token)
            email = payload['email']
            user_id = payload['user_id']
            sessions = SessionModel.objects(jwt_token=token,
                                            user_id=user_id,
                                            email=email)
            if len(sessions) == 0:
                raise exceptions.AuthenticationFailed({
                    'Error': "Token mismatch",
                    'status': "401"
                })
            else:
                user = UserModel.objects(user_id=sessions[0]["user_id"],
                                         email=sessions[0]["email"])
                user_data = json.loads(user[0].to_json())

                return (user_data, token)
        except jwt.exceptions.InvalidTokenError:
            raise exceptions.AuthenticationFailed()
        except:
            print "Unexpected error:", sys.exc_info()
            traceback.print_tb(sys.exc_info()[2])
            raise exceptions.AuthenticationFailed(str(sys.exc_info()))
Пример #9
0
def home():
    if request.method == 'POST':
        username = request.form.get('username')
        user = UserModel.query.filter_by(username=username).first()

        if not user:
            user = UserModel(username=username)
            db.session.add(user)
            db.session.commit()

        session['id'] = user.id
        next_page = request.args.get('next')

        if next_page:
            return redirect(next_page)

        return redirect('/')

    user = current_user()
    if user:
        clients = OAuth2ClientModel.query.filter_by(user_id=user.id).all()
    else:
        clients = []

    return render_template('home.html', user=user, clients=clients)
Пример #10
0
def getUserByName(username):
    """
    根据username获取用户
    """
    assert isinstance(username, str)
    result = db.user.find_one({'username': username})
    return UserModel(result=result)
Пример #11
0
    def put(self, uid):
        """更新用户资料"""
        assert current_user.id == uid  # 断言判断当前用户是本人,十分懒人的处理了,哈哈

        form = UserForm()
        user = UserModel.find_by_id(uid)
        user.update(**form.form)
        return dict(code=200, msg='success', data=user.asdict())
Пример #12
0
    def login(self):

        user_model = UserModel()

        key = SECRET_KEY
        password = self.password+key
        self.password = md5(password.encode('utf8')).hexdigest()

        model_result = user_model.login(self.username,self.password)

        if model_result:
            data = {
                'id': model_result[0],
                'nickname':model_result[1]
            }
            return data
        else:
            return None
Пример #13
0
    def post(self):
        name = request.json['name']
        birth_date = request.json['birthDate']
        gender = request.json['gender']
        phone_number = request.json['phoneNumber']
        disturbance_factor = request.json['disturbanceFactor']
        favorite_food = request.json['favoriteFood']

        user = UserModel(name=name,
                         birth_date=birth_date,
                         gender=gender,
                         phone_number=phone_number)
        user.save()

        SurveyModel(disturbance_factor=disturbance_factor,
                    favorite_food=favorite_food,
                    user=user).save()

        return Response('', 200)
Пример #14
0
def register():
    form = RegisterForm(meta=dict(csrf=False))
    if form.validate():
        user, msg = UserModel.register_user(form.form)
        if user:
            return dict(code=200, msg=msg, data=user.asdict())
        else:
            return dict(code=201, msg=msg, data=None)
    else:
        return form.errors
Пример #15
0
    def post(self, *args, **kwargs):
        #todo: handle openid login passwordless
        email = self.get_argument('user_email', None)
        if not email:
            raise InvalidInput('user_email cannot be empty')
        password = self.get_argument('user_password', None)
        if not email:
            raise InvalidInput('user_password cannot be empty')

        is_sign_up = self.get_argument('is_sign_up', None)
        user_model = UserModel()

        user_id = user_model.get_user_id_from_email(email)
        if not user_id:
            if is_sign_up:
                #exception here is internal error... pretty serious
                user_id = user_model.create_user_in_db(email, password)
            else:
                #raise auth error
                raise InvalidInput('wrong username or password')
        else:
            user_id = user_model.get_user_id_from_login(email, password)
            if not user_id:
                #raise auth error
                raise InvalidInput('wrong username or password')

        session = user_model.create_session(user_id)
        view = JsonView({'session': session}).render()
        self.finish(view)
Пример #16
0
def login():
    form = LoginForm(meta=dict(csrf=False))
    if form.validate():
        user = UserModel.validate_login(request.form)

        if user:
            login_user(user)
            return dict(code=200, msg='success', data=user.asdict())
        else:
            return dict(code=401,
                        msg='incorrect username or password',
                        data=None)
    else:
        return form.errors
Пример #17
0
def login(request):
    if request.data.get("google_id_token") is not None:
        auth_method = "google"
        google_id_token = request.data["google_id_token"]
    elif request.data.get("email") is not None and request.data.get("password") is not None:
        auth_method = "email"
        email = request.data.get("email")
        password = request.data.get("password")
    else:
        return Response(status=status.HTTP_400_BAD_REQUEST)

    try:
        full_name = ""
        profile_image_url = None
        if auth_method == "google":
            try:
                id_info = id_token.verify_oauth2_token(
                    google_id_token, googlerequests.Request(),
                    "3890518873-9igg3o5c5c45a3cnq3fku68jrvc5ricj.apps.googleusercontent.com")
            except ValueError as value_error:
                print(value_error)
                return Response(data=str(value_error), status=status.HTTP_401_UNAUTHORIZED)
            print(id_info)

            if id_info['iss'] not in ['accounts.google.com', 'https://accounts.google.com']:
                return Response(status=status.HTTP_403_FORBIDDEN, data='Wrong issuer {}'.format(id_info['iss']))

            if id_info.get('hd') != "deepen.ai" and id_info.get('hd') != "deepenai.com" \
                    and id_info["email"] != "*****@*****.**" \
                    and id_info["email"] != "*****@*****.**":
                return Response(status=status.HTTP_403_FORBIDDEN, data='Unauthorized user {}'.format(id_info))
            user_id = id_info["sub"]
            email = id_info["email"]
            full_name = id_info["name"]
            profile_image_url = id_info["picture"]

        else:
            user = UserModel.objects(email=email, password=password)
            if len(user) == 0:
                return Response(status=status.HTTP_403_FORBIDDEN, data='Unauthorized user {}'.format(email))
            user_id = user[0]["user_id"]
            email = user[0]["email"]

        return create_jwt_token(user_id, email, full_name=full_name, profile_image_url=profile_image_url)
    except:
        print "Unexpected error:", sys.exc_info()
        traceback.print_tb(sys.exc_info()[2])
        return Response(data=str(sys.exc_info()), status=status.HTTP_500_INTERNAL_SERVER_ERROR)
Пример #18
0
    def post(self):
        email = request.form.get('email')
        code = request.form.get('code')
        user = UserModel.query.filter_by(email=email).first()

        if not code:
            return self.render_json(code=1001)

        redis_conn = MyRedis()
        redis_code = redis_conn.get_str(email)
        if redis_code:
            redis_code = redis_code.decode()

        redis_conn.close_conn()
        if code == redis_code and redis_code:

            if not user:
                UserModel(email=email).save()
                user = UserModel.query.filter_by(email=email).first()
            login_user(user, remember=True)
            return self.render_json(data={'url': '/order'})
        return self.render_json(code=1001)
Пример #19
0
def create_jwt_token(user_id, email, profile_image_url=None, full_name=None):
    current_time = datetime.now()
    UserModel.objects(user_id=user_id,
        email=email).update_one(upsert=True, last_logged_in_date_time=current_time)
    if email.endswith("deepenai.com"):
        UserModel.objects(user_id=user_id, email=email).update_one(set__user_role__role="labeller")
    elif email.endswith("deepen.ai"):
        UserModel.objects(user_id=user_id, email=email).update_one(set__user_role__role="superadmin")
    if profile_image_url is not None:
        UserModel.objects(user_id=user_id, email=email).update_one(set__profile_image_url=profile_image_url)
    if full_name is not None:
        UserModel.objects(user_id=user_id, email=email).update_one(set__full_name=full_name)
    user = UserModel.objects(user_id=user_id, email=email)
    if len(user) == 0:
        return Response(status=status.HTTP_401_UNAUTHORIZED,
            data='Unauthorized user {}'.format(email))
    user_data = json.loads(user[0].to_json())
    role = user_data.get("user_role", {}).get("role", "")
    full_name = user_data.get("full_name", "")
    profile_image_url = user_data.get("profile_image_url")
    authorized_client_ids = user_data.get("user_role", {}).get("authorized_client_ids", [])

    payload = {
        'user_id': user_id,
        'email': email,
        'role': role,
        'authorized_client_ids': authorized_client_ids,
        'expires_at_date_time': (current_time + timedelta(days=1)).isoformat()
    }

    jwt_token = jwt.encode(payload, "SECRET_KEY")

    SessionModel(
        jwt_token=jwt_token,
        user_id=user_id,
        email=email,
    ).save()

    data = {
        "jwt_token": jwt_token,
        "role": role,
        "authorized_client_ids": authorized_client_ids,
        "full_name": full_name
    }
    if profile_image_url is not None:
        data["profile_image_url"] = profile_image_url
    return Response(data=data)
Пример #20
0
 def get_current_user(self):
     user_session = self.request.headers.get('X-Pbsession')
     user_model = UserModel()
     user_id = user_model.get_user_id_from_session(user_session)
     return user_id
Пример #21
0
 def get_survey_by_phone_num(cls, phone_number: str):
     survey = SurveyModel.objects(user=UserModel.objects(phone_number=phone_number).first()).first()
     if not survey:
         abort(403)
     return survey
Пример #22
0
 def save(self, data: Dict, session=None) -> UserModel:
     try:
         user = UserModel()
         user.email = data['email']
         user.role_id = data['role_id']
         user.name = data['name']
         user.password = UserModel.get_hashed_password(data['password'])
         user.cellphone = data.get('cellphone', '')
         user.lastname = data['lastname']
         user.status = 'active'
         user.active = True
         session.add(user)
         session.commit()
         print(user)
         return user
     except sqlalchemy.exc.IntegrityError as ie:
         logger.error(str(ie))
         session.rollback()
         raise Exception("El email ya existe")
     except Exception as exc:
         logger.error(str(exc))
         session.rollback()
         raise exc
Пример #23
0
 def get_current_user(self):
     user_session = self.request.headers.get('X-Icsession')
     user_model = UserModel()
     user_id = user_model.get_user_id_from_session(user_session)
     return user_id