Esempio n. 1
0
def register(request):
    if request.method == 'GET':
        context = {
            'title': '注册',
        }
        return render(request, 'user/register.html', context=context)
    elif request.method == 'POST':
        username = request.POST.get('username')
        email = request.POST.get('email')
        # password = request.POST.get('password')
        password = my_password_generator(request.POST.get('password'))
        icon = request.FILES.get('icon')

        user = User()
        user.username = username
        user.email = email
        user.password = password
        user.icon = icon
        user.save()
        u_token = uuid.uuid4().hex
        print(u_token)
        cache.set(u_token, username, timeout=60 * 60 * 24)
        # 暂时还不成功,需要用到celery来在后台运行,或者因为是在windows平台
        # p = Process(target=send_verification_email, args=(username, email, u_token))
        # p.start()
        send_verification_email(username, email, u_token)
        return HttpResponseRedirect(reverse('shop:login'))
Esempio n. 2
0
    def post(self):
        print('1111')

        parse = parser.parse_args()
        print('22222')
        user = User()
        user.username = parse.get('username')

        user.password = parse.get('password')
        user.email = parse.get('email')
        user.token = get_token()
        print(user.email)
        print(user.username)
        print(user.password)
        responseData = {}
        print('@@@@@')
        users = User.query.filter(User.email == user.email)
        print('$$$$$$')
        if users.count() > 0:  # 已存在
            responseData['status'] = 406
            responseData['msg'] = '注册失败'
            responseData['err'] = '该邮箱已经被注册使用!'
            return responseData
        else:  # 不存在
            # 写入数据库
            print('****')
            db.session.add(user)
            print('&&&&')
            db.session.commit()
            print('^^^^')
            responseData['status'] = 200
            responseData['msg'] = '注册成功,请查看邮件(需要激活)!'
            responseData['data'] = user
            return responseData
Esempio n. 3
0
    def post(self):
        # 从基本的请求解析器中复制请求参数
        registParser = self.parser.copy()

        # 再添加注册时使用的
        registParser.add_argument('password',
                                  dest='pwd',
                                  required=True,
                                  help='密码不能为空')
        registParser.add_argument('nickname', required=True, help='昵称不能为空')
        registParser.add_argument('email', required=True, help='邮箱不能为空')
        registParser.add_argument('phone', required=True, help='手机号不能为空')

        args = registParser.parse_args()

        u = User()
        u.name = args['name']
        u.nickname = args['nickname']
        u.email = args['email']
        u.phone = args['phone']
        u.password = md5_crypt(args['pwd'])

        if dao.save(u):
            # token = md5_crypt(str(uuid4()))
            # App.ext.cache.set(token, u.id, timeout=60 * 10)
            active_url = request.host_url + 'account?opt=active&token='
            # msg = Message(subject='淘票票用户激活', recipients=[u.email], sender='*****@*****.**')
            # msg.html = '<h1>{}注册成功</h1><h3><a href={}>点击这里验证邮件</a></h3><h2>或者复制地址到浏览器: {}'.format(u.name, active_url,
            #                                                                                       active_url)
            #
            # App.ext.mail.send(msg)

            tasks.sendMail.delay(u.id, active_url)
            return {'status': 666, 'msg': '用户注册成功'}
        return {'status': 660, 'msg': '用户注册失败'}
Esempio n. 4
0
def register(request):
    if request.method == 'GET':
        return render(request, 'register.html')

    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        password2 = request.POST.get('cpwd')
        email = request.POST.get('email')
        res = User.objects.filter(username=username)
        if len(res) > 0:
            return HttpResponse("用户已经存在")
        elif password != password2:
            return HttpResponse("两次密码输入不正确")
        else:
            password = hashlib.sha1(password.encode('utf8')).hexdigest()
            request.session['username'] = username
            request.session.set_expiry(0)
            # User.objects.create(username=username,password=password,email=email)
            set = User()
            set.username = username
            set.password = password
            set.email = email
            set.save()
            return render(request, 'login.html')
Esempio n. 5
0
    def post(self):
        # 从基本的请求解析器中复制请求参数说明
        registParser = self.parser.copy()

        # 再添加注册时使用
        registParser.add_argument('password',
                                  dest='pwd',
                                  required=True,
                                  help='口令不能为空')
        registParser.add_argument('email', required=True, help='邮箱不能为空!')
        registParser.add_argument('phone', required=True, help='手机号不能为空!')
        registParser.add_argument('nickname', required=True, help='昵称不能为空!')

        # 验证请求参数是满足要求
        args = registParser.parse_args()

        u = User()
        u.name = args.get('name')
        u.nickName = args.get('nickname')
        u.email = args.get('email')
        u.phone = args.get('phone')
        u.password = helper.md5_crypt(args.get('pwd'))

        if dao.save(u):

            # helper.sendEmail(u)
            url = request.host_url
            tasks.sendMail.delay(u.id, url)

            return {'status': 200, 'msg': '用户注册成功'}

        return {'status': 201, 'msg': '用户注册失败'}
Esempio n. 6
0
    def post(self):
        parse = parser.parse_args()
        user = User()
        user.name = parse.get('name')
        user.phone = parse.get('phone')
        user.email = parse.get('email')
        user.password = generate_password_hash(password=parse.get('password'))
        user.token = get_token()
        responseData = {}

        users = User.query.filter(User.email == user.email)
        if users.count > 0:
            responseData['status'] = 406
            responseData['msg'] = '注册失败'
            responseData['err'] = '邮箱已注册'
        else:
            db.session.add(user)
            db.session.commit()
            mas = Message(subject='TPP激活邮件', recipients=[user.email])
            url_active = 'http://127.0.0.1:5000/api/v1/register/?token=' + user.token
            body_html = render_template('useractive.html',
                                        name=user.name,
                                        url_active=url_active)
            mas.html = body_html
            mail.send(mas)
            cache.set(user.token, user.id, timeout=60 * 60)
            responseData['status'] = 200
            responseData['msg'] = '注册成功请逐一查收(需要激活)'
            responseData['data'] = user
            return responseData
Esempio n. 7
0
def user_add():
    if request.method == "GET":
        return render_template('./user-add.html')
    if request.method == "POST":
        user = User()
        username = request.form.get('username')
        sql_user = User.query.filter_by(username=username)
        for i in sql_user:
            if i.username == username:
                return render_template('./2222.html')
            # s_name=sql_user[0].username
            # print(s_name)
            # if username==s_name:
            #     return '数据库已存在该用户'
        email = request.form.get('email')
        address = request.form.get('address')
        user.username = username
        user.email = email
        user.address = address
        t = time.localtime()
        T = "{}:{}:{}".format(t.tm_hour, t.tm_min, t.tm_sec)
        user.time = T
        user.key = 1
        db.session.add(user)
        db.session.commit()
        return render_template('./successful.html')
Esempio n. 8
0
    def post(self):
        #从基本的请求解析器中复制请求参数说明
        registParser=self.parser.copy()
        #再注册时使用
        registParser.add_argument('password',
                            required=True,
                            help='密码不能为空',
                            dest='pwd')
        registParser.add_argument('email',
                            required=True,
                            help='邮箱不能为空'
                            )
        registParser.add_argument('phone',
                            required=True,
                            help='电话不能为空'
                            )
        registParser.add_argument('nickname',
                            required=True,
                            help='昵称不能为空'
                            )
        registParser.add_argument('photo_1',
                                  type=FileStorage,
                                  location='files',
                                  required=True,
                                  help='必须提供一个photo'
                                  )


        # 验证请求参数是满足要求
        args=registParser.parse_args()

        u=User()
        u.name=args.get('name')
        u.nickname=args.get('nickname')
        u.phone=args.get('phone')
        u.email=args.get('email')
        u.password=helper.md5_crypt(args.get('pwd'))

        uFile: FileStorage = args.get('photo_1')
        print('上传的文件名:', uFile.filename)

        newFileName = str(uuid.uuid4()).replace('-', '')
        newFileName += '.' + uFile.filename.split('.')[-1]

        uFile.save(os.path.join(settings.MEDIA_DIR, newFileName))


        if dao.save(u):
            helper.sendEmail(u)

            return {'status':200,
                    'msg':'上传成功,用户注册成功',
                    'path': '/static/uploads/{}'.format(newFileName)}

        return {'status':201,
                    'msg':'用户注册失败'}
Esempio n. 9
0
def regist():
    user = User()
    user.username = request.form.get('register_username')
    user.password = request.form.get('register_password')
    user.email = request.form.get('register_email')

    db.session.add(user)
    db.session.commit()

    return redirect(url_for('userBlue.login'))
Esempio n. 10
0
def handle_register():
    # 1.拿到用户输入的数据
    username = request.form.get("username")
    password = request.form.get("password")
    email = request.form.get("email")
    gender = request.form.get("gender")
    age = request.form.get("age")

    # 2.把数据存到数据库
    user = User()
    user.username = username
    user.password = generate_password_hash(password)
    user.gender = gender
    user.age = age
    user.email = email
    user.tokon = str(uuid.uuid4())

    try:
        user.save()
    except Exception as ex:
        abort(400)

    # 往缓存里写一对键值对
    cache.set(user.tokon, user.id, timeout=60)

    # 3.给注册的邮箱发送一个激活邮件
    # msg = Message(
    #     subject="欢迎注册脸盆网",
    #     recipients=[]
    # )

    # 把发送邮件的过程放到后台去执行

    # 创建一个Message对象
    # msg = Message()
    # msg.subject = "欢迎注册脸盆网"
    # msg.recipients = [email]
    # msg.body =
    # 在url_for里面,不认识的参数会自动变成请求参数
    active_url = url_for("user.handle_active",
                         _external=True,
                         tokon=user.tokon)
    # msg.html = render_template("ActivePage.html",username=username,active_url=active_url)
    # # 把Message发出去
    # mail.send(msg)
    from App.celery_util import send_mail

    subject = "欢迎注册脸盆网"
    recipients = [email]
    html = render_template("ActivePage.html",
                           username=username,
                           active_url=active_url)
    send_mail.delay(subject=subject, recipients=recipients, html=html)

    return "恭喜你注册成功"
Esempio n. 11
0
def user_register():
    formm = RegisterForm()

    # query first level data
    first_layer_category = Category.query.filter(Category.parentid == 0).all()
    # query other levels data
    other_layer_category = Category.query.filter(Category.parentid != 0).all()
    #  sponsor object
    sponsor = Sponsor.query.first()
    # current date
    current_year = datetime.datetime.now().year
    time_now = datetime.datetime.now().strftime("%m-%d %H:%M")

    if request.method == "GET":
        # v_code = VerifyCode().generate()
        return render_template("foreground/reg.html", **locals())
    else:
        # check whether the form information filled by the user meets all of the restrictions
        if formm.validate_on_submit():
            # data = request.form
            # uname = data.get("username")
            # upsw = data.get("password")
            # upsw_r = data.get("repassword")
            # umail = data.get("mail")
            # v_code = request.form.get("yzm")
            # only if all restrictions are met , get user information
            uname = formm.username.data
            upsw = formm.password.data
            upsw_r = formm.confirm.data
            umail = formm.email.data
            # v_code = formm.verificationcode.data
            # print(v_code, session['code'])
            # Determine whether the verification code is correct
            # if session['code'] != v_code:
            #     war = "Wrong verification code"
            #     return render_template("foreground/reg.html", **locals())
            if (not User.query.filter(User.username == uname).first()) and upsw == upsw_r:
                # save user information and insert data into the database
                user = User()
                user.username = uname
                user.password = upsw
                user.email = umail
                user.portrait = "foreground/images/avatar_blank.gif"
                user.regtime = datetime.datetime.now()
                db.session.add(user)
                db.session.commit()
                return redirect(url_for("bbs.bbs_index"))
            else:
                return render_template("foreground/reg.html", **locals())
        else:
            return render_template("foreground/reg.html", **locals())
Esempio n. 12
0
def register(mode=None):
    if request.method == "GET":
        data = {"msg": "Register"}
        return jsonify(data)

    elif request.method == "POST":
        if mode == "match":
            username = request.form.get("username")
            passwd = request.form.get("passwd")
            passwd2 = request.form.get("passwd2")
            email = request.form.get("email")
            phone_number = request.form.get("phone_number")
            print(username, passwd, passwd2, email, phone_number)
            # 用来判断用户名是否重复,两次密码是否一致
            # 判断数据库中有没有用户名
            users = User.query.all()
            for user in users:
                if username == user.username:
                    return jsonify({"msg": "2", "status": ""}), 201  #用户已经存在
            if passwd != passwd2:
                return jsonify({"msg": "3", "status": ""}), 201  #两次密码不同
            # 用正则表达式判断邮件和手机号码格式对不对
            res = re.fullmatch(email_match, email)
            if not res:
                return jsonify({"msg": "4", "status": ""}), 201  #邮箱格式错误
            res2 = re.fullmatch(phone_match, phone_number)
            if not res2:
                return jsonify({"msg": "5", "status": ""}), 201  #电话号码格式错误
            return jsonify({"msg": "信息正确", "status": True}), 201

        else:
            username = request.form.get("username")
            passwd = request.form.get("passwd")
            email = request.form.get("email")
            phone_number = request.form.get("phone_number")

            print("uname=", username)
            print("passwd=", passwd)

        # 判断完后插入
        user = User()
        user.username = username
        user.password = passwd
        user.email = email
        user.phonenumber = phone_number
        db.session.add(user)

        db.session.commit()

        return jsonify({"msg": "注册成功,请先登录", "username": username}), 201
Esempio n. 13
0
def register():
    # 实例化注册表单类
    form = Register()
    # 实例化存储注册表单数据
    e = User()
    if form.validate_on_submit():
        e.username = form.username.data
        e.password = form.userpass.data
        e.email = form.email.data
        e.registerTime = datetime.now()
        e.status = '专家'
        if e.save():
            flash('注册成功,已为您跳转到登录页面...')
        return redirect(url_for('expert.login'))
    return render_template('expert/register.html', form=form)
Esempio n. 14
0
def register():
    # 实例化注册表单类
    form = Register()
    u = User()
    if form.validate_on_submit():
        # 实例化存储注册表单数据
        u.username = form.username.data
        u.password = form.userpass.data
        u.email = form.email.data
        u.registerTime = datetime.now()
        u.status = '作者'
        u.save()
        flash('注册成功,以为您跳转到登录页面...')
        return redirect(url_for('user.login'))
    return render_template('user/register.html', form=form)
Esempio n. 15
0
 def post(self):
     parser = reqparse.RequestParser()
     parser.add_argument(name='pos_id', type=int)
     parser.add_argument(name='name', type=str)
     parser.add_argument(name='email', type=str)
     parser.add_argument(name='tel', type=str)
     parser.add_argument(name='passwd', type=str)
     parse = parser.parse_args()
     pos_id = parse.get('pos_id')
     name = parse.get('name')
     email = parse.get('email')
     tel = parse.get('tel')
     passwd = parse.get('passwd')
     user = User()
     user.pos_id = pos_id
     user.name = name
     user.email = email
     user.tel = tel
     user.passwd = passwd
     user.img_src = '/default/avatar_64px.png'
     try:
         db.session.add(user)
         db.session.commit()
     except Exception as e:
         print(str(e))
     user = User.query.filter(User.email.__eq__(email)).first()
     pos = Position.query.filter(Position.id.__eq__(user.pos_id)).first()
     bu = BusinessUnit.query.filter(BusinessUnit.id.__eq__(
         pos.bu_id)).first()
     data = {
         'id': user.id,
         'name': user.name,
         'email': user.email,
         'avatar': user.img_src,
         'tel': user.tel,
         'passwd': user.passwd,
         'create_at': user.create_at,
         'pos': {
             'id': pos.id,
             'name': pos.name,
             'bu': {
                 'id': bu.id,
                 'name': bu.name
             }
         }
     }
     return jsonify(data)
Esempio n. 16
0
def do_register(request):
    if request.method == 'POST':
        u = User()
        u.username = request.POST.get('username')
        u.email = request.POST.get('email')
        u.password = request.POST.get('password')
        if request.POST.get('password') == request.POST.get('cpassword'):
            u.save()
            request.session['user'] = u.username
            request.session.set_expiry(600)
            redis.incr('online_user')
            token = u.generate_activate_token()
            url = 'http://10.0.129.114:8000/blog/useractivate/?token=%s'%token
            message = '<h3>你好,%s</h3><a href=%s>点我激活</a>'%(u.username,url)
            print('-------------------',message)
            send_mail(u.email,message,token=token)
            return HttpResponse('你好,激活邮件已经发送至你的 邮箱,快去激活吧')
Esempio n. 17
0
def register():
    if current_user.status == '管理员':  # 当前用户是管理员,才会渲染下面的模板,否则渲染nocan.html
        # 创建管理员表单对象
        ad = User()
        if request.method == 'POST':
            if User.query.filter(
                    User.username == request.form.get('adname')).first():
                flash('用户名已存在')
            if User.query.filter(
                    User.email == request.form.get('email')).first():
                flash('邮箱已存在')
            if request.form.get('passwd') != request.form.get('repass'):
                flash('两次输入的密码不一样,请重新输入...')
            else:
                ad.username = request.form.get('adname')
                ad.password = request.form.get('passwd')
                ad.email = request.form.get('email')
                ad.registerTime = datetime.now()
                ad.status = '管理员'

                ad.leaderId = current_user.id
                num = 0  # 权限初始值
                if request.form.get('pe1'):
                    num += int(request.form.get('pe1'))
                if request.form.get('pe2'):
                    num += int(request.form.get('pe2'))
                if request.form.get('pe4'):
                    num += int(request.form.get('pe4'))
                if request.form.get('pe8'):
                    num += int(request.form.get('pe8'))
                ad.permissions = num
                if ad.save():
                    flash('注册成功...')
                else:
                    flash('注册失败...')
        if current_user.permissions & 8:
            # 可以创建超级管理员,可设置管理员拥有的权限
            return render_template('admin/register_ad1.html')
        elif current_user.permissions & 4:
            # 可以创建普通管理员,没有权限的管理员
            return render_template('admin/register_ad2.html')
        else:
            return render_template('common/noPermission.html')
    else:
        return render_template('common/nocan.html', u=current_user.username)
Esempio n. 18
0
    def post(self):
        # 获取前端提交的参数
        args = parser.parse_args()
        username = args.get("username")
        password = args.get("password")
        email = args.get("email")

        # 注册(添加用户数据)
        user = User()
        user.username = username
        user.password = generate_password_hash(password)
        # print(user.password)
        # print(len(user.password))
        user.email = email
        user.user_token = str(uuid.uuid4())  # token, 唯一标识

        try:
            db.session.add(user)
            db.session.commit()

            # 发生邮件激活用户
            # 创建邮件
            msg = Message(subject="淘票票用户激活",
                          sender="*****@*****.**",
                          recipients=[email])
            # 邮件内容
            # msg.html = "<b>hello 淘票票</b>"
            msg.html = render_template(
                'user_active.html',
                username=username,
                active_url="http://10.20.158.28:5000/useractive/?token=%s" %
                user.user_token)
            # 发送邮件
            mail.send(msg)

            # 使用缓存cache
            # 给每个用户单独使用缓存,在5分钟内激活才有效
            cache.set(user.user_token, user.id, timeout=300)

        except Exception as e:
            return {"returnCode": "-1", "msg": str(e)}

        return {"returnCode": "0", "msg": "success", "returnValue": user}
Esempio n. 19
0
    def post(self):
        # 从基本的请求解析器中复制请求参数说明
        registParser = self.parser.copy()

        # 再添加注册时使用
        registParser.add_argument('password', dest='pwd', required=True, help='口令不能为空')
        registParser.add_argument('email', required=True, help='邮箱不能为空!')
        registParser.add_argument('phone', required=True, help='手机号不能为空!')
        registParser.add_argument('nickname', required=True, help='昵称不能为空!')

        # 验证请求参数是满足要求
        args = registParser.parse_args()

        u = User()
        u.name = args.get('name')
        u.nickName = args.get('nickname')
        u.email = args.get('email')
        u.phone = args.get('phone')
        u.password = helper.md5_crypt(args.get('pwd'))

        if dao.save(u):
            # token = helper.md5_crypt(str(uuid.uuid4()))
            #
            # # 将token设置到redis缓存中
            # App.ext.cache.set(token, u.id, timeout=10 * 60)  # 允许10分钟内来激活用户
            #
            # active_url = request.host_url + 'account/?opt=active&token=' + token

            # # 发送邮件
            # msg = Message(subject='淘票票用户激活',
            #               recipients=[u.email],
            #               sender='*****@*****.**')
            # msg.html = "<h1>{} 注册成功!</h1><h3>请先<a href={}>激活</a>注册账号</h3> <h2>或者复制地址到浏览器: {}</h2>".format(u.name, active_url, active_url)
            #
            # App.ext.mail.send(msg)e
            url = request.host_url
            tasks.sendMail.delay(u.id,url)

            return {'status': 200,
                    'msg': '用户注册成功'}

        return {'status': 201,
                'msg': '用户注册失败'}
Esempio n. 20
0
def register(request):
    method = request.method
    if method == 'GET':
        return render(request,'user/user_register.html')
        username = request.POST.get('username')
        phone = request.POST.get('phone')
        email = request.POST.get('email')
        pwd = request.POST.get('pwd')
        gender = request.POST.get('usergendrer')
        icon = request.FILES.get('usericon')
        user = User()
        user.name = username
        user.email = email
        user.phone = phone
        user.pwd = md5(pwd)
        user.gender = gender
        user.icon = icon
        user.save()
        return HttpResponseRedirect(reverse('app:mine'))
    else:
        raise Exception('登录错误')
Esempio n. 21
0
def registered(request):
    if request.method == 'POST':
        emali = request.POST.get('email')
        firstname = request.POST.get('firstname')
        lastname = request.POST.get('lastname')
        phone = request.POST.get('phone')
        password = request.POST.get('password')
        repassword = request.POST.get('repassword')
        add = User()
        add.username = emali
        add.email = emali
        add.first_name = firstname
        add.last_name = lastname
        add.date_joined = datetime.now()
        if len(phone) == 11:
            add.mobile = phone
        if password == repassword:
            add.password = password
        add.save()

    return render(request, 'member-add.html')
Esempio n. 22
0
def register(request):
    if request.method == "GET":
        return render(request, 'register.html')
    elif request.method == "POST":

        email = request.POST.get('email')
        password = request.POST.get('password')
        # print(email,password)

        user = User()
        user.email = email
        user.password = password
        user.save()

        #重定向
        response = redirect('app:index')

        #保持状态
        response.set_cookie('email', user.email)

        print(request.COOKIES.get("email"))
        return response
Esempio n. 23
0
def root():
    # 创建管理员表单对象
    ad = User()
    if User.query.filter(User.username == 'root').first():
        # 管理员已经存在
        num = 1
    else:
        # 给一个最开始的管理员、权限全开
        ad.username = '******'
        ad.password = '******'
        ad.email = '*****@*****.**'
        ad.registerTime = datetime.now()
        ad.status = '管理员'
        ad.leaderId = 0
        ad.permissions = 31
        # flash('测试')
        if ad.save():
            # 注册成功
            num = 2
        else:
            # 注册失败
            num = 3
    return render_template('admin/root_register.html', num=num)
Esempio n. 24
0
    def post(self):

        args = parse_base.parse_args()
        password = args.get("password")
        action = args.get("action").lower()

        if action == USER_ACTION_REGISTER:
            args_register = parse_register.parse_args()

            email = args_register.get("email")
            username = args_register.get("username")

            user = User()
            user.username = username
            user.set_password(password)
            user.email = email

            if not user.save():
                abort(400, msg="创建失败")

            data = {
                "status": HTTP_CREATE_OK,
                "msg": "用户创建成功",
                "data": user,
            }
            return marshal(data, single_user_fields)

        elif action == USER_ACTION_LOGIN:
            args_login = parse_login.parse_args()

            email = args_login.get("email")
            username = args_login.get("username")

            user = get_user(username) or get_user(email)

            if not user:
                abort(400, msg="用户不存在")

            if not user.verify_password(password):
                abort(401, msg="用户名或密码错误")

            if user.is_delete:
                abort(401, msg="用户不存在")

            token = uuid.uuid4().hex
            user.access_token = token

            data = {
                "msg": "login success",
                "status": HTTP_OK,
                "token": token,
            }

            return data


        elif action == USER_ACTION_QUICK_LOGIN:
            args_quick_login = parse_quick_login.parse_args()
            username = args_quick_login.get("username")

            user = get_user(username)
            if user:
                abort(400, msg="用户名已经存在")

            user = User()
            user.username = username
            # user.ip=ip

            if not user.save():
                abort(400, msg="创建失败")
            room = Room.query.get(1)
            room.users.append(user)
            room.save()
            token = uuid.uuid4().hex
            user.access_token = token
            user.save()
            data = {
                "msg": "quick_login success",
                "status": HTTP_OK,
                "token": token,
                "data": user,
            }
            return marshal(data, single_user_fields)

        elif action == USER_VALIDATE:
            args = parse_validate.parse_args()
            token = args.get("token")
            if token:
                user = get_user(token)
                if user:
                    data = {
                        "msg": "validate pass",
                        "status": HTTP_OK,
                        "token": token,
                        "data": user,
                    }
                    return marshal(data, single_user_fields)
            abort(400, msg="validate failed")
        else:
            abort(400, msg="请提供正确的参数")
Esempio n. 25
0
    def post(self):
        # 获取用户信息
        parse = parser.parse_args()
        user = User()
        user.username = parse.get('username')
        user.password = generate_password_hash(parse.get('password'))
        user.email = parse.get('email')
        user.phone = parse.get('phone')
        user.token = str(uuid.uuid5(uuid.uuid4(), 'register'))

        # 返回数据
        response_data = {
            'status': 406,
            'msg': '注册失败',
            'date': str(time.ctime())
        }

        # 逻辑处理
        users = User.query.filter(User.username == user.username).filter(User.email == user.email)
        if users.count()>0: # 用户已存在
            response_data['error'] = '该用户已经注册过,请直接登录!'
            return response_data
        else:   # 用户不存在
            # 邮箱处理
            users = User.query.filter(User.email == user.email)
            if users.count()>0:   # 邮箱已被注册
                response_data['error'] = '邮箱已被注册'
                return response_data


            # 用户名处理
            users = User.query.filter(User.username == user.username)
            if users.count()>0:   # 用户名被占用
                response_data['error'] = '用户名被占用'
                return response_data


            # 存储数据库
            db.session.add(user)
            db.session.commit()

            # 写邮件
            active_url = 'http:///127.0.0.1:5000/api/v1/active?token=' + user.token
            username = user.username
            body_html = render_template('userActive.html', active_url=active_url, username=username)
            msg = Message(subject="激活邮件",  # 主题
                          html=body_html,    # 正文
                          sender="*****@*****.**",  # 发件人
                          recipients=[user.email])  # 收件人
            # 发邮件
            mail.send(msg)

            # cahce操作
            # token:userid
            cache.set(user.token, user.id, timeout=30)

            # 返回数据
            response_data['status'] = 200
            response_data['msg'] = '注册成功'
            response_data['data'] = user

            return response_data