Пример #1
0
 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('密码不正确')
Пример #2
0
    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
Пример #3
0
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('帐号已注册')
Пример #4
0
    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
Пример #5
0
 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('密码不正确')
Пример #6
0
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'))