def authenticate(email, password): """ 用户登录,登录成功返回token,并且将登录时间写入数据库,登录失败返回失败原因 :param email: :param password: :return: json """ filters = {User.email == email} user_info = User().get_one(filters) user_info_password = User().get_one(filters, order='id desc', field=('password', )) if user_info is None: return BaseController().error('找不到用户') else: if User.check_password(user_info_password['password'], password): updated_time = int(time.time()) User.update(email=email, updated_time=updated_time) token = UserAuthJWT.encode_auth_token(user_info['id'], updated_time) return BaseController().successData( { 'token': token.decode(), 'user': user_info }, '登录成功') else: return BaseController().error('密码不正确')
def validate(self): rv = Form.validate(self) if not rv: message = '' for fieldName, errorMessages in self.errors.items(): for err in errorMessages: message = message + fieldName + ': ' + err + '\n' flash(message, 'error') return False # Query data from database user = savvy_collection.find_one({EMAIL: self.email.data.rstrip()}) if user: email = user.get(EMAIL, None) hash_password = user.get(PASSWORD, None) user_password = self.password.data.rstrip() account_token = user.get(TOKEN, '') if User.validate_login(hash_password, user_password): userObj = User(email) login_user(userObj) return True else: flash('Incorrect login credentials', 'error') else: flash('Incorrect login credentials', 'error') return False
def register(params): """ 注册 :param params: :return: """ filters = {User.email == params['email']} user = User().get_one(filters) if not user: user = User(email=params['email'], password=User.set_password(params['password']), status=1) status = user.add(user) if status == True: return BaseView().success_data(msg='注册成功') return BaseView().error('注册失败') return BaseView().error('帐号已注册')
def validate(self): rv = Form.validate(self) if not rv: message = '' for fieldName, errorMessages in self.errors.items(): for err in errorMessages: message = message + fieldName + ': ' + err + '\n' flash(message, 'error') return False user = savvy_collection.find_one({EMAIL: self.email.data.rstrip()}) if user: flash('Email has already been taken', 'warning') return False else: raw_token = self.email.data + 'verification code' token = md5(raw_token.encode('utf-8')).hexdigest() user = { PASSWORD: md5(self.password.data.rstrip().encode('utf-8')).hexdigest(), EMAIL: self.email.data.rstrip(), CATEGORY: self.category.data, TOKEN: token } # insert into database employerId = savvy_collection.insert_one(user).inserted_id if self.category.data == EMPL: jobs_collection.insert({EMPLID: employerId}) # url = os.getenv('SCRIPT_URI') <----------------get this to work when server is up # url = '127.0.0.1:5000' # message = """ # Hi {}, # # You need to confirm your account by clicking this link: # {}/confirmEmail/{}/{} # # Best, # Team SavvyHire # """.format(self.username.data.rstrip(),url, self.username.data.rstrip(), token) # # cmd="""echo '{}' | mail -s 'Confirm account' {}""".format(message, self.email.data.rstrip()) # p=subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE) # p.communicate() # log in userObj = User(user[EMAIL]) login_user(userObj) return True
def authenticate(oa_account, password): """ 用户登录,登录成功返回token,写将登录时间写入数据库;登录失败返回失败原因 :param oa_account: :param password: :return: json """ filters = { User.oa_account == oa_account } userInfo = User().getOne(filters) userInfoPas = User().getOne(filters, order='id desc', field=('password',)) if userInfo is None: return BaseController().error('找不到用户') else: if User.check_password(userInfoPas['password'], password): updated_at = int(time.time()) token = UsersAuthJWT.encode_auth_token(userInfo['id'], updated_at) User.update(userInfo['id'], remember_token=token.decode(), last_login_time=updated_at) return BaseController().successData({'token': token.decode()}, '登陆成功') else: return BaseController().error('密码不正确')
def activate(username, token): if User.validate_rego_token(username, token): login_user(User(username)) return redirect(url_for('account')) return redirect(url_for('home'))