Exemplo n.º 1
0
def login(req):
    email = req.get_form_var("email", '').rstrip()
    if req.get_method() == 'POST':
        password = req.get_form_var("password", '')
        error = None
        if not is_validate_email(email):
            error = "请输入合法的邮箱"
        if not password:
            error = "请输入密码"
        elif len(password) < 4 or not password.isalnum():
            error = "密码请用长于4位的字母数字组合"
        if not error:
            u = User.get_by_email(email)
            if req.get_form_var("login", None):
                if not u:
                    error = "该邮箱还未注册"
                else:
                    u = User.login(email, password)
                    if u:
                        set_session(req, u)
                        return req.redirect("/")
                    else:
                        error = "邮箱和密码不匹配"
            elif req.get_form_var("register", None):
                if u:
                    error = "该邮箱已经注册,请直接登录"
                else:
                    u = User.register(email, password)
                    if u:
                        set_session(req, u)
                        return req.redirect("/")
                    else:
                        error = "注册失败..."
    return st("/login.html", **locals())
Exemplo n.º 2
0
    def delete(self, user_id):
        try:
            User.remove_by_id(user_id)
        except Exception as e:
            print(e)
            return {'msg': 'unable to delete user'}

        return {'msg': 'user deleted'}, 204
Exemplo n.º 3
0
def init_data():
    from webapp.models.user import User
    from webapp.models.question import Question, Tag, Answer

    # Role.insert_roles()

    User.generate_fake(100)
    Tag.generate_fake(20)
    Question.generate_fake(1000)
    Answer.generate_fake(100)
Exemplo n.º 4
0
 def get(self, user_id):
     # Get suer from db
     print(user_id)
     user = User.find_by_id(user_id)
     if not user:
         return {'error': f'User with id {user_id} not found '}, 400
     return {'data': userSchema.dump(user)}
Exemplo n.º 5
0
def oauth_callback(provider):
    if not current_user.is_anonymous:
        return redirect(url_for('index'))

    oauth = OAuthSignIn.get_provider(provider)
    result = oauth.callback()

    if result.get('error'):
        # Need a valid email address for user identification
        return redirect(
            url_for('index',
                    error=result['error'] + ": " +
                    result['error_description']))

    app.user = User.find_or_create_by_email(result['email'])
    app.user.username = result['name']
    app.user.family_name = result['family_name']
    app.user.nickname = result['nickname']
    app.user.preferred_username = result['preferred_username']

    # Log in the user, by default remembering them for their next visit
    # unless they log out.
    login_user(app.user, remember=True)

    return redirect(result['next_page'])
Exemplo n.º 6
0
    def post(self):
        # Validate json body
        fields = 'email', 'password'
        json_payload = request.get_json(silent=True)
        if not json_payload or not validate_body(fields, json_payload):
            return {'error': f'Must specify: {fields}'}, 400

        # Get user
        auth_user = User.find_by_email(json_payload['email'])
        if not auth_user:
            return {'error': 'User does not exist'}, 401
        # Verify password
        if not auth_user.verify_password(json_payload['password']):
            return {'error': 'Incorrect password'}, 401

        # Create token for user

        return {
            'data': {
                'msg': 'successfully signed in',
                'user_id': auth_user.id,
                'access_token': create_access_token(identity=auth_user.id),
                'refresh_token': create_refresh_token(identity=auth_user.id),
            }
        }
Exemplo n.º 7
0
 def post(self, user_id, course_code):
     try:
         user = User.find_by_id(user_id)
         user.add_course(course_code)
     except Exception as e:
         print(e)
         return {'error': 'unable to add course to user'}, 500
     return {'msg': 'Added course to user'}
Exemplo n.º 8
0
 def delete(self, user_id):
     try:
         req_json = request.get_json()
         user = User.find_by_id(user_id)
         user.remove_rating(**req_json)
     except Exception as e:
         print(e)
         return {'error': 'Unable to get delete rating for article'}, 500
     return {}, 204
Exemplo n.º 9
0
    def get(self, user_id):
        try:
            user = User.find_by_id(user_id)
            user_articles = articleRatingsSchema.dump(user.get_articles())

        except Exception as e:
            print(e)
            return {'error': 'Unable to get user rating for article'}, 500
        return {'data': user_articles}
Exemplo n.º 10
0
    def delete(self, user_id, course_code):
        try:
            user = User.find_by_id(user_id)
            user.remove_course(course_code)
        except Exception as e:
            print(e)
            return {'error': 'unable to remove course from user'}, 500

        return {'msg': f'removed course {course_code}'}
Exemplo n.º 11
0
 def get(self, user_id):
     try:
         user = User.find_by_id(user_id)
         courses = user.get_courses()
         courses_json = coursesSchema.dump(courses)
     except Exception as e:
         print(e)
         return {'error': f'unable to get courses for user {user_id}'}, 500
     return {'data': courses_json}
Exemplo n.º 12
0
 def post(self, user_id):
     try:
         req_json = request.get_json()
         user = User.find_by_id(user_id)
         print(req_json)
         user.add_rating(**req_json)
     except Exception as e:
         print(e)
         return {'error': 'Unable to get user rating for article'}, 500
     return {'msg': 'Rating added'}, 201
Exemplo n.º 13
0
def check_session(req):
    cookie = req.get_cookie(SITE_COOKIE)
    print "check session", cookie
    if cookie:
        email, user_id, session = cookie.split(':')
        user = User.get(user_id)
        if user and user.session == session:
            req.user = user
            req.email = email

    print "session user", req.user
Exemplo n.º 14
0
    def post(self):
        # Validate json body
        fields = 'email', 'password', 'firstname', 'lastname'
        json_payload = request.get_json(silent=True)
        print(json_payload)
        if not json_payload or not validate_body(fields, json_payload):
            return {'error': f'Must specify: {fields}'}, 400
        if not validate_body_values(fields, json_payload):
            return {'error': f'Must specify values for {fields}'}, 400
        # Check if user with email already exists
        if User.find_by_email(json_payload['email']) is not None:
            return {'error': f'{json_payload["email"]} already exists'}, 401
        # Create user & save
        new_user = User(**json_payload)
        new_user.save()

        return {
            'data': {
                'msg': 'user was successfully created',
                'user_id': f'{new_user.id}',
                'access_token': create_access_token(identity=new_user.id),
                'refresh_token': create_refresh_token(identity=new_user.id),
            }
        }
Exemplo n.º 15
0
 def put(self, user_id):
     # Editable fields
     req_body = request.get_json(silent=True)
     try:
         user_changes = userSchema.load(req_body)
     except Exception as e:
         print(e)
         return {'error': 'invalid fields to change'}, 400
     # Get the user
     user = User.find_by_id(user_id)
     if not user:
         return {'error': f'User with id {user_id} does not exist'}, 400
     for field, value in user_changes.items():
         setattr(user, field, value)
     user.save()
     return {'msg': 'user details updated'}
Exemplo n.º 16
0
def admin(req):
    if not req.user:
        return req.redirect('/login')
    if req.user.email == "*****@*****.**":
        if req.get_method() == "POST":
            name = req.get_form_var("name", None)
            os = req.get_form_var("os", None)
            w = req.get_form_var("w", 0)
            h = req.get_form_var("h", 0)
            iw = req.get_form_var("iw", 0)
            ih = req.get_form_var("ih", 0)
            vk = req.get_form_var("vk", None)
            if name and os:
                id = Screen.new(name, os, w, h, iw, ih, vk == 'Y')
                if id:
                    return req.redirect("/admin")
        user_count = User.count()
        app_count = App.count()
        screens = Screen.gets()
        return st("/admin.html", **locals())
    raise AccessError("not admin")
Exemplo n.º 17
0
    def get(self, user_id): 
        '''
        Get all sesssions belonging to a user 
        optional query parameter of course_code 
        '''
        try: 
            user = User.find_by_id(user_id)
            if 'course_code' in request.args:
                #! Find a single session
                print('*'*30)
                req_sessions = user.get_sessions(request.args['course_code'])
                sessions_json = sessionsSchema.dump(req_sessions)

            else: 
                sessions_json = sessionsSchema.dump(user.get_sessions())

        except Exception as e: 
            print(e)
            return {'error': 'Unable to get sessions'}, 500
        return {'data': 
            sessions_json
        }
Exemplo n.º 18
0
 def get(self):
     # get all users
     users = User.get_users()
     print(users)
     return {f'data': usersSchema.dump(users)}
def create_user(username, password):
    user = User(username, password)
    db.session.add(user)
    db.session.commit()
    return user
Exemplo n.º 20
0
def load_user(user_id):
    return User.find_by_id(user_id)