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)
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)
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)
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)
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)
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)
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)
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)
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)