Ejemplo n.º 1
0
def login():
    form = LoginForm()
    if request.method == 'GET':
        user_login = session.get('login') or request.cookies.get('login')
        if user_login:
            return redirect('/')
        return render_template('login.html', form=form)
    if request.method == 'POST':
        if not form.validate():
            return render_template('login.html', form=form)
        else:
            user = UserPackage()
            login_res = user.login_user(request.form['login'],
                                        request.form['password']).values[0, 0]
            if login_res == 1:
                response = make_response(redirect('/'))
                session['login'] = request.form['login']
                if request.form.get('remember_me'):
                    expires = datetime.now() + timedelta(days=60)
                    response.set_cookie('login',
                                        request.form['login'],
                                        expires=expires)
                session['login'] = request.form['login']
                return response
            elif login_res == 0:
                return render_template('login.html',
                                       form=form,
                                       problem='Невірний пароль або логін')
            else:
                return render_template('login.html',
                                       form=form,
                                       problem='А вто тут прям помилка')
Ejemplo n.º 2
0
 def post(self):
     x = request
     # 获取用户传过来的参数(api的参数为json数据)
     data = request.json
     # 将数据与LoginForm进行绑定
     form = LoginForm(data=data)
     # 检查用户是否合法
     user = form.validate()
     # 生成token
     token = create_token(uid=user.user_profile_id)
     return generate_response(data={"token":token})
Ejemplo n.º 3
0
    def post(self):
        # 接收用户数据
        data = request.json
        if not data:
            raise ArgsTypeException(message="传参的方式不对,或没有传参")

        # 验证用户输入数据合法性
        # 创建Form -> data绑定 -> validate
        form = LoginForm(data=data)
        # validate函数返回了合法的用户
        user = form.validate()
        # 生成token
        pic = "https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1016301861,2773103463&fm=26&gp=0.jpg"
        token = create_token(uid=user.user_profile_id)
        return generate_response(data={"token": token, "pic": pic})
Ejemplo n.º 4
0
 def post(self):
     data = request.json
     if not data:
         raise ArgsTypeException
     # 将接收的数据绑定form,由form验证
     form = LoginForm(data=data)
     # validate函数返回了合法的用户
     user = form.validate()
     if user:
         # 生成token
         token = create_token(uid=user.user_profile_id)
         return generate_response(data={"token":token})
     else:
         result = form.errors
         raise FormValidateException(message=result)
Ejemplo n.º 5
0
def login():
    if request.method == 'GET':
        return render_template('base_index.html')

    if request.method == 'POST':
        form = LoginForm(request.form)
        if form.validate():
            username = form.data.get('username', '')
            password = form.data.get('password', '')

            admin_user = User.authenticate(username, password)
            if admin_user:
                return_status(200)
            else:
                return_status(400)
        else:
            return_status(401)
Ejemplo n.º 6
0
    def post(self):
        form = LoginForm(self.request.arguments)

        if form.validate():
            username = form.data.get('username', '')
            password = form.data.get('password', '')

            user = User.authenticate(username, password)
            if user:
                user.last_login_at = datetime.datetime.now()
                user.last_login_ip = self.request.remote_ip
                user.save()

                self.set_secure_cookie('user_id', str(user.id))
                self.redirect(self.reverse_url('admin'))
            else:
                return self.return_status(400, '用户名或密码错误')
        else:
            return self.return_status(400, form.errors)
Ejemplo n.º 7
0
def login():
    form = LoginForm(request.form)
    if request.method == 'POST':
        is_pwd = request.values.get('is_pwd', '')
        if is_pwd:
            username = request.values.get('email', '')
            password = request.values.get('password', '')
            if check_auth_by_mail(username, password):
                user = User.query.filter_by(email=username).first()
            else:
                return tpl('login.html', form=form, msg=u"用户名或者密码错误.")
        else:
            password = request.values.get('password')
            if password == DEFAULT_PASSWORD and not DevelopmentConfig.DEBUG:
                return tpl('login.html', form=form, msg=u"用户名或者密码错误.")
            user = form.validate()
        if user:
            login_user(user)
            if user.check_password(DEFAULT_PASSWORD) and not is_pwd:
                flash(u'您还在使用默认密码, 请及时<a href="%s">修改您的密码!</a>' %
                      url_for('user.pwd_change'), 'danger')
            return redirect(request.args.get("next", "/"))
        return tpl('login.html', form=form, msg=u"用户名或者密码错误.")
    return tpl('login.html', form=form)
Ejemplo n.º 8
0
    def post(self, next_action=None, key=None):
        ''' checks username, password, logs in user and redirect to start page '''

        login_form = LoginForm().get_form(self.request.POST)
        if login_form.validate():
            email = login_form['email'].data
            password = login_form['password'].data
            remember_me = login_form['remember_me'].data

            logging.info('(LoginHandler.post) Trying to login email: %s' %
                         email)

            # Username and password check
            try:
                user = self.login_user(email, password, remember_me)
                user.last_login = datetime.datetime.now()
                user.put()

                # set the language from user profile
                self.set_language(user.language)

                # login was succesful, User is in the session
                if next_action == 'booking':
                    # moved booking up here since it can come from any role (provider or patient)
                    booking = ndb.Key(urlsafe=key).get()
                    patient_from_user = db.get_patient_from_user(user)

                    if patient_from_user.key == booking.patient:
                        self.email_and_confirm_booking(booking)
                        self.redirect('/patient/bookings/' +
                                      patient_from_user.key.urlsafe())

                else:
                    # check role of user, redirect to appropriate page after login
                    if auth.PROVIDER_ROLE in user.roles:
                        provider = db.get_provider_from_user(user)
                        logging.info(
                            '(LoginHandler.post) User %s logged in as provider, redirecting to profile page',
                            user.get_email())

                        # check the action, if it's from a connection do that first
                        # and then redirect back to profile page with a message
                        if next_action == 'connect':
                            connected_provider_key = ndb.Key(urlsafe=key)
                            connected_provider = connected_provider_key.get()
                            target_url = '/' + connected_provider.vanity_url + '/connect'
                            self.redirect(target_url)

                        elif next_action == 'accept':
                            target_url = '/provider/network/' + provider.vanity_url + '/accept/' + key
                            self.redirect(target_url)

                        elif provider.display_welcome_page:
                            self.redirect('/provider/welcome/' +
                                          provider.vanity_url)
                        else:
                            self.redirect('/provider/profile/%s' %
                                          provider.vanity_url)

                        # log the event
                        self.log_event(user, "Provider Logged In")

                    elif auth.PATIENT_ROLE in user.roles:
                        patient = db.get_patient_from_user(user)

                        logging.info(
                            '(LoginHandler.post) User %s logged in as patient, redirecting to / page',
                            user.get_email())
                        self.redirect('/patient/bookings/' +
                                      patient.key.urlsafe())

                    else:
                        logging.error(
                            '(LoginHandler.post) User %s logged in without roles',
                            user.get_email())
                        error_message = 'Your account is not activated. Please check your email for an activation message or <a href="/contact">contact us</a> if you require assistance.'
                        self.render_template('user/login.html',
                                             login_form=login_form,
                                             error_message=error_message)

            except (InvalidAuthIdError, InvalidPasswordError), e:
                # throws InvalidAuthIdError if user is not found, throws InvalidPasswordError if provided password doesn't match with specified user
                error_message = _(u'Login failed. Try again.')
                self.render_template('user/login.html',
                                     login_form=login_form,
                                     error_message=error_message)
            except AttributeError, ae:
                logging.warn('User has not password, authentication fails %s' %
                             ae)
Ejemplo n.º 9
0
    def post(self, next_action=None, key=None):
        ''' checks username, password, logs in user and redirect to start page '''
        
        login_form = LoginForm().get_form(self.request.POST)
        if login_form.validate():
            email = login_form['email'].data
            password = login_form['password'].data
            remember_me = login_form['remember_me'].data
            
            logging.info('(LoginHandler.post) Trying to login email: %s' % email)

            # Username and password check
            try:
                user = self.login_user(email, password, remember_me)
                user.last_login = datetime.datetime.now()
                user.put()
                
                # set the language from user profile
                self.set_language(user.language)

                # login was succesful, User is in the session
                if next_action == 'booking':
                    # moved booking up here since it can come from any role (provider or patient)
                    booking = ndb.Key(urlsafe=key).get()
                    patient_from_user = db.get_patient_from_user(user)

                    if patient_from_user.key == booking.patient:
                        self.email_and_confirm_booking(booking)
                        self.redirect('/patient/bookings/' + patient_from_user.key.urlsafe())
                
                else:
                    # check role of user, redirect to appropriate page after login
                    if auth.PROVIDER_ROLE in user.roles:
                        provider = db.get_provider_from_user(user)
                        logging.info('(LoginHandler.post) User %s logged in as provider, redirecting to profile page', user.get_email())

                        # check the action, if it's from a connection do that first
                        # and then redirect back to profile page with a message
                        if next_action == 'connect':
                            connected_provider_key = ndb.Key(urlsafe=key)
                            connected_provider = connected_provider_key.get()
                            target_url = '/' + connected_provider.vanity_url + '/connect'
                            self.redirect(target_url)

                        elif next_action == 'accept':
                            target_url = '/provider/network/' + provider.vanity_url + '/accept/' + key
                            self.redirect(target_url)

                        elif provider.display_welcome_page:     
                            self.redirect('/provider/welcome/' + provider.vanity_url)
                        else:
                            self.redirect('/provider/profile/%s' % provider.vanity_url)

                        # log the event
                        self.log_event(user, "Provider Logged In")

                    elif auth.PATIENT_ROLE in user.roles:
                        patient = db.get_patient_from_user(user)
                        
                        logging.info('(LoginHandler.post) User %s logged in as patient, redirecting to / page', user.get_email())
                        self.redirect('/patient/bookings/' + patient.key.urlsafe())
                        
                    else:
                        logging.error('(LoginHandler.post) User %s logged in without roles', user.get_email())
                        error_message = 'Your account is not activated. Please check your email for an activation message or <a href="/contact">contact us</a> if you require assistance.'
                        self.render_template('user/login.html', login_form=login_form, error_message=error_message)
                
            except (InvalidAuthIdError, InvalidPasswordError), e:
                # throws InvalidAuthIdError if user is not found, throws InvalidPasswordError if provided password doesn't match with specified user
                error_message = _(u'Login failed. Try again.')
                self.render_template('user/login.html', login_form=login_form, error_message=error_message)
            except AttributeError, ae:
                logging.warn('User has not password, authentication fails %s' % ae)