Exemplo n.º 1
0
def index():
    """
    账号登录认证
    """
    if current_user and current_user.is_authenticated:
        return redirect(url_for('index'))
    if not SWITCH_LOGIN_ACCOUNT:
        flash(u'账号登录功能关闭,暂不支持账号登录', 'warning')
        return redirect(url_for('index'))
    form = LoginForm()
    if request.method == 'POST':
        if form.validate_on_submit():
            # 获取认证信息
            condition = {
                'type_auth': TYPE_AUTH_ACCOUNT,
                'auth_key': form.account.data,
                'auth_secret': md5(form.password.data)
            }
            user_auth_info = get_user_auth_row(**condition)
            if user_auth_info is None:
                flash(u'%s, 登录失败,请检查内容后重新登录' % form.account.data, 'warning')
                return render_template('auth/index.html', title='login', form=form)
            if user_auth_info.status_verified == 0:
                flash(u'%s, 登录账号尚未验证,请先验证账号' % form.account.data, 'warning')
                return render_template('auth/index.html', title='login', form=form)
            # session['logged_in'] = True

            # 用 login_user 函数来登入他们
            login_user(get_user_row_by_id(user_auth_info.user_id), remember=form.remember.data)
            flash(u'%s, 恭喜,您已成功登录' % form.account.data, 'success')
            return redirect(request.args.get('next') or url_for('index'))
        # flash(form.errors, 'warning')  # 调试打开
    return render_template('auth/index.html', title='login', form=form, SWITCH_LOGIN_THREE_PART=SWITCH_LOGIN_THREE_PART)
Exemplo n.º 2
0
def add():
    """
    添加管理
    """
    # return render_template('admin/add.html', title='admin_add')

    form = AdminAddForm(request.form)
    if request.method == 'POST':
        if form.validate_on_submit():
            current_time = datetime.utcnow()
            # 手机号码国际化
            area_id = form.area_id.data
            area_code = area_code_map.get(area_id, '86')
            admin_info = {
                'username': form.username.data,
                'password': md5(form.password.data),
                'area_id': area_id,
                'area_code': area_code,
                'phone': form.phone.data,
                'role_id': form.role_id.data,
                'create_time': current_time,
                'update_time': current_time,
            }
            admin_uid = add_admin(admin_info)
            if admin_uid:
                flash(u'Add Success', 'success')
                return redirect(url_for('admin.lists'))
            else:
                flash(u'Add Failed', 'warning')
    # flash(form.errors, 'warning')  # 调试打开
    return render_template('admin/add.html', title='admin_add', form=form)
Exemplo n.º 3
0
def auth():
    """
    用户登录认证信息
    """
    # 获取团队成员三级树形结构
    team_tree = get_team_tree(current_user.id)

    form = UserAuthForm(request.form)
    condition = {
        'user_id': current_user.id,
        'type_auth': TYPE_AUTH_ACCOUNT,
    }
    user_auth_info = get_user_auth_row(**condition)

    if user_auth_info:
        form.id.data = user_auth_info.id
        form.type_auth.data = user_auth_info.type_auth
        form.auth_key.data = user_auth_info.auth_key
        form.status_verified.data = user_auth_info.status_verified
        form.create_time.data = user_auth_info.create_time
        form.update_time.data = user_auth_info.update_time
        if request.method == 'GET':
            form.auth_secret.data = ''
    if request.method == 'POST':
        if form.validate_on_submit():
            # 权限校验
            condition = {
                'id': form.id.data,
                'user_id': current_user.id,
                'type_auth': TYPE_AUTH_ACCOUNT,
            }
            op_right = get_user_auth_row(**condition)
            if not op_right:
                flash(u'修改失败', 'warning')
                return redirect(url_for('index'))

            current_time = datetime.utcnow()
            user_auth_data = {
                # 'type_auth': AUTH_TYPE_ACCOUNT,
                # 'auth_key': form.auth_key.data,
                # 'status_verified': form.status_verified.data,
                'update_time': current_time,
            }
            if form.auth_secret.data:
                user_auth_data['auth_secret'] = md5(form.auth_secret.data)
                result = edit_user_auth(form.id.data, user_auth_data)
                if result:
                    flash(u'修改成功', 'success')
                    return redirect(url_for('.auth'))
                else:
                    flash(u'信息不变', 'info')
            else:
                flash(u'信息不变', 'info')
        else:
            flash(u'修改失败', 'warning')
        # flash(form.errors, 'warning')  # 调试打开

    # flash(u'Hello, %s' % current_user.id, 'info')  # 测试打开
    return render_template('user/auth.html', title='auth', form=form, team_tree=team_tree)
Exemplo n.º 4
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)
Exemplo n.º 5
0
def profile():
    """
    当前登录管理员信息
    :return:
    """
    admin_id = current_user.id
    # return render_template('admin/profile.html', title='admin_profile')

    form = AdminProfileForm(request.form)
    admin_info = get_admin_row_by_id(admin_id)
    if request.method == 'GET':
        form.id.data = admin_id
        form.username.data = admin_info.username
        form.password.data = ''
        form.area_id.data = admin_info.area_id
        form.phone.data = admin_info.phone
        form.role_id.data = admin_info.role_id
        form.create_time.data = admin_info.create_time
        form.update_time.data = admin_info.update_time
    if request.method == 'POST':
        if form.validate_on_submit():
            current_time = datetime.utcnow()
            # 手机号码国际化
            area_id = form.area_id.data
            area_code = area_code_map.get(area_id, '86')
            admin_data = {
                'username': form.username.data,
                'area_id': area_id,
                'area_code': area_code,
                'phone': form.phone.data,
                'role_id': form.role_id.data,
                'update_time': current_time,
            }
            if form.password.data:
                admin_data['password'] = md5(form.password.data)

            result = edit_admin(admin_id, admin_data)
            if result:
                flash(u'修改成功', 'success')
                return redirect(url_for('admin.lists'))
        else:
            form.create_time.data = admin_info.create_time
            form.update_time.data = admin_info.update_time
            flash(u'修改失败', 'warning')
    # flash(form.errors, 'warning')  # 调试打开
    return render_template('admin/profile.html',
                           title='admin_profile',
                           form=form)
Exemplo n.º 6
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)
Exemplo n.º 7
0
def phone():
    """
    手机登录认证
    """
    if current_user and current_user.is_authenticated:
        return redirect(url_for('index'))
    if not SWITCH_LOGIN_PHONE:
        flash(u'手机登录功能关闭,暂不支持手机登录', 'warning')
        return redirect(url_for('index'))
    form = LoginPhoneForm()
    if request.method == 'POST':
        if form.validate_on_submit():
            # 手机号码国际化
            area_id = form.area_id.data
            area_code = area_code_map.get(area_id, '86')
            mobile_iso = '%s%s' % (area_code, form.phone.data)
            # 获取认证信息
            condition = {
                'type_auth': TYPE_AUTH_PHONE,
                'auth_key': mobile_iso,
                'auth_secret': md5(form.password.data)
            }
            user_auth_info = get_user_auth_row(**condition)
            if not user_auth_info:
                flash(u'%s, 登录失败,请检查内容后重新登录' % form.phone.data, 'warning')
                return render_template('auth/phone.html', title='login', form=form)
            if user_auth_info.status_verified == 0:
                flash(u'%s, 登录手机尚未验证,请先验证手机' % form.phone.data, 'warning')
                return render_template('auth/phone.html', title='login', form=form)
            # session['logged_in'] = True

            # 用 login_user 函数来登入他们
            login_user(get_user_row_by_id(user_auth_info.user_id), remember=form.remember.data)
            flash(u'%s, 恭喜,您已成功登录' % form.phone.data, 'success')
            return redirect(request.args.get('next') or url_for('index'))
        # flash(form.errors, 'warning')  # 调试打开
    return render_template('auth/phone.html', title='login', form=form, SWITCH_LOGIN_THREE_PART=SWITCH_LOGIN_THREE_PART)
Exemplo n.º 8
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)
Exemplo n.º 9
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)