示例#1
0
def phone():
    """
    手机注册
    """
    # return "Hello, World!\nReg!"
    from app_frontend.forms.reg import RegPhoneForm
    form = RegPhoneForm()
    # 推荐人赋值
    form.user_pid.data = session.get('user_pid', 0)
    if request.method == 'POST':
        if form.validate_on_submit():
            current_time = datetime.utcnow()
            # 添加用户注册信息
            user_data = {
                'reg_ip': get_real_ip(),
                'create_time': current_time,
                'update_time': current_time,
            }
            user_id = add_user(user_data)

            # 添加用户认证信息

            # 手机号码国际化
            area_id = form.area_id.data
            area_code = area_code_map.get(area_id, '86')
            mobile_iso = '%s%s' % (area_code, form.phone.data)

            user_auth_data = {
                'user_id': user_id,
                'type_auth': TYPE_AUTH_PHONE,
                'auth_key': mobile_iso,
                'auth_secret': md5(form.password.data),
                'status_verified': 1,
                'create_time': current_time,
                'update_time': current_time,
            }
            add_user_auth(user_auth_data)

            # 添加用户基本信息
            user_profile_data = {
                'user_id': user_id,
                'user_pid': form.user_pid.data,
                'area_id': form.area_id.data,
                'phone': form.phone.data,
                'create_time': current_time,
                'update_time': current_time,
            }
            add_user_profile(user_profile_data)

            if user_id:
                flash(u'%s, 恭喜您注册成功' % form.phone.data, 'success')
            else:
                flash(u'%s, 很遗憾注册失败' % form.phone.data, 'warning')
            return redirect(url_for('auth.index'))
        # 闪现消息 success info warning danger
        # flash(form.errors, 'warning')  # 调试打开
    return render_template('reg/phone.html', title='reg', form=form)
示例#2
0
def _track_login_s(sender, user, **extra):
    """
    通过信号处理登录日志
    :param sender:
    :param user:
    :param extra:
    :return:
    """
    # 用户通过验证后,记录登入IP
    login_info = {
        'login_ip': get_real_ip(),
        'login_time': datetime.utcnow()
    }
    edit_user(user.id, login_info)
示例#3
0
def login():
    """
    后台登录页面
    """
    # print current_user.__dict__
    # return json.dumps(current_user.__dict__)
    if current_user and current_user.is_authenticated:
        return redirect(url_for('index'))
    from app_backend.forms.login import LoginForm
    form = LoginForm()
    if request.method == 'POST':
        if form.validate_on_submit():
            from app_backend.api.admin import get_admin_row
            condition = {
                'username': form.account.data,
                'password': md5(form.password.data)
            }
            admin_info = get_admin_row(**condition)
            if admin_info is None:
                flash(u'%s, 登录失败,账号密码错误' % form.account.data, 'warning')
                return render_template('login.html', title='login', form=form)
            if admin_info.status_delete == STATUS_DEL_OK:
                flash(u'%s, 登录失败,账号已被删除' % form.account.data, 'warning')
                return render_template('login.html', title='login', form=form)
            # session['logged_in'] = True
            # 用户通过验证后,记录登入IP
            from app_backend.api.admin import edit_admin
            ip_data = {
                'login_ip': get_real_ip(),
                'login_time': datetime.utcnow()
            }
            edit_admin(admin_info.id, ip_data)
            # 用 login_user 函数来登入他们
            from app_backend.api.admin import get_admin_row_by_id
            login_user(get_admin_row_by_id(admin_info.id),
                       remember=form.remember.data)

            # 加载权限
            # Tell Flask-Principal the identity changed
            identity_changed.send(app,
                                  identity=Identity(admin_info.id,
                                                    admin_info.role_id))

            flash(u'%s, 恭喜,登录成功' % form.account.data, 'success')
            return redirect(request.args.get('next') or url_for('index'))
        # flash(form.errors, 'warning')  # 调试打开
    return render_template('login.html', title='login', form=form)
示例#4
0
def setting():
    """
    设置
    """
    # return "Hello, World!\nSetting!"
    form = UserProfileForm(request.form)
    if request.method == 'GET':
        from app_backend.api.user import get_user_row_by_id
        user_info = get_user_row_by_id(current_user.id)
        if user_info:
            form.nickname.data = user_info.nickname
            form.avatar_url.data = user_info.avatar_url
            form.email.data = user_info.email
            form.phone.data = user_info.phone
            form.birthday.data = user_info.birthday
            form.create_time.data = user_info.create_time
            form.update_time.data = user_info.update_time
    if request.method == 'POST':
        if form.validate_on_submit():
            # todo 判断邮箱是否重复
            from app_backend.api.user import edit_user
            from datetime import datetime
            user_info = {
                'nickname': form.nickname.data,
                'avatar_url': form.avatar_url.data,
                'email': form.email.data,
                'phone': form.phone.data,
                'birthday': form.birthday.data,
                'update_time': datetime.utcnow(),
                'last_ip': get_real_ip(),
            }
            result = edit_user(current_user.id, user_info)
            if result == 1:
                flash(u'修改成功', 'success')
            if result == 0:
                flash(u'修改失败', 'warning')
        flash(form.errors, 'warning')  # 调试打开
    flash(u'Hello, %s' % current_user.email, 'info')  # 测试打开
    return render_template('./setting.html', title='setting', form=form)
示例#5
0
def index():
    """
    注册
    """
    # return "Hello, World!\nReg!"
    from app_frontend.forms.reg import RegForm
    form = RegForm()
    # 推荐人赋值
    user_pid = session.get('user_pid', 0)
    if not app.config.get('TEST') and not user_pid:
        flash(u'没有推荐人,不能注册', 'warning')
        return redirect('index')
    form.user_pid.data = user_pid
    if request.method == 'POST':
        if form.validate_on_submit():
            current_time = datetime.utcnow()
            # 添加用户注册信息
            user_data = {
                'create_time': current_time,
                'update_time': current_time,
                'reg_ip': get_real_ip()
            }
            from app_frontend.api.user import add_user
            user_id = add_user(user_data)

            # 添加用户认证信息
            user_auth_data = {
                'user_id': user_id,
                'type_auth': TYPE_AUTH_ACCOUNT,
                'auth_key': form.account.data,
                'auth_secret': md5(form.password.data),
                'status_verified': 1,
                'create_time': current_time,
                'update_time': current_time,
            }
            from app_frontend.api.user_auth import add_user_auth
            add_user_auth(user_auth_data)

            # 添加用户基本信息
            user_profile_data = {
                'user_id': user_id,
                'user_pid': form.user_pid.data,
                'nickname': form.account.data,
                'create_time': current_time,
                'update_time': current_time,
            }
            add_user_profile(user_profile_data)
            if user_id:
                # 加入用户注册自动监测锁定队列
                q = RabbitDelayQueue(exchange=EXCHANGE_NAME,
                                     queue_name='lock_reg_not_active',
                                     ttl=LOCK_REG_NOT_ACTIVE_TTL)
                q.put({
                    'user_id': user_id,
                    'reg_time': current_time.strftime('%Y-%m-%d %H:%M:%S')
                })
                q.close_conn()

                flash(u'%s, 恭喜您注册成功' % form.account.data, 'success')
            else:
                flash(u'%s, 很遗憾注册失败' % form.account.data, 'warning')
            return redirect(url_for('auth.index'))
        # 闪现消息 success info warning danger
        # flash(form.errors, 'warning')  # 调试打开
    return render_template('reg/index.html', title='reg', form=form)
示例#6
0
def email():
    """
    邮箱注册
    """
    # return "Hello, World!\nReg!"
    from app_frontend.forms.reg import RegEmailForm
    form = RegEmailForm()
    # 推荐人赋值
    form.user_pid.data = session.get('user_pid', 0)
    if request.method == 'POST':
        if form.validate_on_submit():
            # 添加用户注册信息
            current_time = datetime.utcnow()
            user_data = {
                'create_time': current_time,
                'update_time': current_time,
                'reg_ip': get_real_ip()
            }
            from app_frontend.api.user import add_user
            user_id = add_user(user_data)

            # 添加用户认证信息
            user_auth_data = {
                'user_id': user_id,
                'type_auth': TYPE_AUTH_EMAIL,
                'auth_key': form.email.data,
                'auth_secret': md5(form.password.data)
            }
            from app_frontend.api.user_auth import add_user_auth
            add_user_auth(user_auth_data)

            # 添加用户基本信息
            user_profile_data = {
                'user_id': user_id,
                'user_pid': form.user_pid.data,
                'email': form.email.data,
                'create_time': current_time,
                'update_time': current_time,
            }
            add_user_profile(user_profile_data)

            if user_id:
                flash(u'%s, 恭喜您注册成功' % form.email.data, 'success')
                # todo 发送邮箱校验邮件
                # email_validate_content = {
                #     'mail_from': 'System Support<*****@*****.**>',
                #     'mail_to': form.email.data,
                #     'mail_subject': 'verify reg email',
                #     'mail_html': 'verify reg email address in mailbox'
                # }
                # from app_frontend import send_cloud_client
                # send_email_result = send_cloud_client.mail_send(**email_validate_content)
                # # 调试邮件发送结果
                # if send_email_result.get('result') is False:
                #     flash(send_email_result.get('message'), 'warning')
                # else:
                #     flash(send_email_result.get('message'), 'success')
                # https://www.***.com/email/signup/uuid
            else:
                flash(u'%s, 很遗憾注册失败' % form.email.data, 'warning')
            return redirect(url_for('auth.index'))
        # 闪现消息 success info warning danger
        # flash(form.errors, 'warning')  # 调试打开
    return render_template('reg/email.html', title='reg', form=form)