예제 #1
0
 def post(self):
     username = request.json.get('username', None)
     password = request.json.get('password', None)
     code = request.json.get('code', None)
     mail = request.json.get('mail', None)
     if username is None or password is None or code is None or mail is None or not re.match(
             r'[a-zA-Z0-9]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+', mail):
         return jsonify(code=ResponseCode.FORMAT_ERROR, msg="用户名密码格式错误")
     cache_email = cache.get(code)
     if cache_email != mail:
         return ResponseClass.warn(ResponseCode.FORMAT_ERROR)
     else:
         cache.delete(code)
         cache.delete(mail)
     session = AppUtils.get_session()
     try:
         # 验证用户名
         AppUtils.validate_username(username)
         from models.models import User
         user = User()
         user.username = username
         user.mail = mail
         user.hash_password(password)
         user.credits = 0
         session.add(user)
         session.commit()
         # 数据库
         from app_config import SQLSession
         return jsonify(code=0, data=user.get_self_data())
     except Exception as e:
         return jsonify(code=-1, msg=e.args[0])
     finally:
         session.close()
예제 #2
0
 def post(self):
     try:
         body = request.get_json()
         user = User(**body)
         user.hash_password()
         user.save()
         id = user.id
         return {'id': str(id)}, 200
     except FieldDoesNotExist:
         raise SchemaValidationError
     except NotUniqueError:
         raise EmailAlreadyExistsError
     except Exception as e:
         raise InternalServerError
예제 #3
0
파일: views.py 프로젝트: LordBH/Cupcake
def login():
    from models.models import User, db, datetime

    context = {
        'password': request.form.get('password'),
        'email': request.form.get('email'),
        'msg': 'Sorry, but your login or password is incorrect',
    }

    if request.method == 'POST':

        query = User.query.filter_by(email=context.get('email').lower(),
                                     password=User.hash_password(context.get('password'))).first()

        if query:
            user = User(query=query)

            query.online = True
            query.active = datetime.now()
            db.session.commit()

            login_user(user, remember=True)
        else:
            return render_template('base.html', context=context)
    return redirect(url_for('main.index_page'))
예제 #4
0
파일: views.py 프로젝트: LordBH/Cupcake
def new_password(s):
    context = {
        'msg': 'Wrong code for create new password',
        'action': "/user/new_password/%s" % (s,),
    }

    if s == session.get('act_str_for_password'):
        context['msg'] = 'Please write your new password'

        if request.method == 'POST':
            from models.models import User, db

            pass1 = request.form.get('pass1')
            pass2 = request.form.get('pass2')

            if User.clean_passwords(pass1, pass2):
                query = User.query.filter_by(email=session.get('email')).first()
                query.password = User.hash_password(pass1)

                db.session.add(query)
                db.session.commit()

                del session['email']
                del session['act_str_for_password']

                context['msg'] = 'Successfully changed password'

                return render_template('reg/flash_message.html', context=context)

        return render_template('reg/handling_pass.html', context=context)

    return render_template('reg/flash_message.html', context=context)
예제 #5
0
 def post(self):
     self.parser.add_argument('username',
                              type=str,
                              help='This username cannot be blank',
                              required=True)
     self.parser.add_argument('password',
                              type=str,
                              help='This password cannot be blank',
                              required=True)
     data = self.parser.parse_args(
         strict=True)  # 获取传输的值/strict=True代表设置如果传以上未指定的参数主动报错
     if User.query.filter_by(username=data['username']).filter_by(
             flag=1).first():
         return {
             'msg': 'user {} already exists'.format(data['username'])
         }, 400
     new_user = User(username=data['username'],
                     password=User.hash_password(data['password']))
     session_add(new_user)
     msg = session_commit()
     if msg:
         return {
             "errors":
             f"{msg}",
             'msg':
             "user add failed at {0}".format(
                 time.strftime("%Y-%m-%d %H:%M:%S"))
         }, 500
     else:
         return {
             "msg":
             "user add successfully at {0}".format(
                 time.strftime("%Y-%m-%d %H:%M:%S"))
         }
예제 #6
0
 def post(self):
     user_data = request.get_json()
     not_exist_fields = get_not_exist_fields(user_data.keys(), User)
     if not_exist_fields:
         return response(f"Unknown arguments: {not_exist_fields}", 404)
     form = RegisterForm(data=user_data)
     user_data['password'] = User.hash_password(user_data['password'])
     if form.validate():
         new_user = User(**user_data)
         session_add(new_user)
         msg = session_add(new_user)
         if msg:
             return response(f"{msg}", 500)
         else:
             return response("user create successfully")
     return response(form.errors, 400)
예제 #7
0
파일: views.py 프로젝트: LordBH/Cupcake
def activate_user(s):
    from models.models import User, ActivatedUsers, db

    context = {
        'msg': 'Write yours password',
        'action': "/user/activate/%s" % (s,),
    }

    query = ActivatedUsers.query.filter_by(activated_str=s).first()

    if request.method == 'GET' and query is not None:
        return render_template('reg/handling_pass.html', context=context)

    if request.method == 'POST':

        f = {
            'pass1': request.form.get('pass1'),
            'pass2': request.form.get('pass2'),
        }

        if query is not None:
            if query.activated:
                context['msg'] = 'This code has already registered'
            query.activated = True

            if User.clean_passwords(f['pass1'], f['pass2']):
                query.users.password = User.hash_password(f['pass1'])
            else:
                context['msg'] = 'Bad password'
                return render_template('reg/handling_pass.html', context=context)

            user = query.users

            login_user(user, remember=True)

            db.session.commit()

            context['msg'] = 'Your account successfully create'

            return render_template('reg/flash_message.html', context=context)

        context['msg'] = 'Wrong code'

    context['msg'] = 'Problem with activation'

    return render_template('reg/flash_message.html', context=context)
예제 #8
0
 def create_seller(self, args):
     try:
         user = User(role_type_id=1, username=args['username'],
                     password_hash=User.hash_password(args['password']))
         db.session.add(user)
         db.session.commit()
         seller = Seller(user_id=user.id, name=args['name'],
                         contact_name=args['contact_name'],
                         contact_number=args['contact_number'],
                         email_id=args['email_id'])
         db.session.add(seller)
         db.session.commit()
         return {"id": seller.id, "isSuccessful": True}, 202
     except SQLAlchemyError as e:
         db.session.rollback()
         logger.exception("Error while creating seller")
         return {"error": str(e), "isSuccessful": False}, 401
     finally:
          db.session.close()
예제 #9
0
 def put(self):
     self.parser.add_argument('username',
                              type=str,
                              help='This username cannot be blank',
                              required=True)
     self.parser.add_argument('password',
                              type=str,
                              help='This password cannot be blank',
                              required=True)
     self.parser.add_argument('new_password',
                              type=str,
                              help='This password cannot be blank',
                              required=True)
     data = self.parser.parse_args()
     try:
         user = User.query.filter_by(username=data['username']).first()
         if user:
             if not user.verify_password(data['password']):
                 return {"msg": "the username or password is wrong!"}, 403
             user.password = User.hash_password(data['new_password'])
             user.update_time = datetime.now()
             msg = session_commit()
             return {
                 "status":
                 msg,
                 "msg":
                 "user update successfully at {0}".format(
                     time.strftime("%Y-%m-%d %H:%M:%S"))
             }
         else:
             return {
                 'msg': 'user {} does`t exists'.format(data['username'])
             }, 400
     except Exception as e:
         return {
             "errors":
             f"{e}",
             'msg':
             "user update failed at {0}".format(
                 time.strftime("%Y-%m-%d %H:%M:%S"))
         }, 500
예제 #10
0
 def create_seller(self, args):
     try:
         user = User(role_type_id=1,
                     username=args['username'],
                     password_hash=User.hash_password(args['password']))
         db.session.add(user)
         db.session.commit()
         seller = Seller(user_id=user.id,
                         name=args['name'],
                         contact_name=args['contact_name'],
                         contact_number=args['contact_number'],
                         email_id=args['email_id'])
         db.session.add(seller)
         db.session.commit()
         return {"id": seller.id, "isSuccessful": True}, 202
     except SQLAlchemyError as e:
         db.session.rollback()
         logger.exception("Error while creating seller")
         return {"error": str(e), "isSuccessful": False}, 401
     finally:
         db.session.close()