예제 #1
0
def login(request):
    """
    Login view
    """
    if request.method == 'POST':
        form = AuthenticationForm(data=request.POST)
        if form.is_valid():
            user = authenticate(email=request.POST['email'],
                                password=request.POST['password'])
            if user is not None:
                if user.is_active:
                    django_login(request, user)
                    return redirect('/')
        else:
            return redirect('/')
            #: if form is invalid, would rather flash an error message on login page...
            #message = request.session['message'] = 'Hello view2!'
            #return render_to_response('accounts/login.html', {
            #'form': form,
            #'message': message,
            #}, context_instance=RequestContext(request))
    else:
        form = AuthenticationForm()

    return render_to_response('auth/login.html', {
        'form': form,
    },
                              context_instance=RequestContext(request))
예제 #2
0
def home():
    project_form = ProjectForm()
    auth_form = AuthenticationForm()
    return render_template("home.html",
                           project_form=project_form,
                           auth_form=auth_form,
                           session=session)
예제 #3
0
def login(request,
          template_name='registration/login.html',
          redirect_field_name=REDIRECT_FIELD_NAME):
    "Displays the login form and handles the login action."
    redirect_to = request.REQUEST.get(redirect_field_name, '')
    if request.method == "POST":
        form = AuthenticationForm(request=request, data=request.POST)
        if form.is_valid():
            # Light security check -- make sure redirect_to isn't garbage.
            if not redirect_to or '//' in redirect_to or ' ' in redirect_to:
                redirect_to = settings.LOGIN_REDIRECT_URL
            #from django.contrib.auth import login
            from auth import login
            login(request, form.get_user())
            if request.session.test_cookie_worked():
                request.session.delete_test_cookie()
            return HttpResponseRedirect(redirect_to)
    else:
        form = AuthenticationForm(request)
    request.session.set_test_cookie()
    if Site._meta.installed:
        current_site = Site.objects.get_current()
    else:
        current_site = RequestSite(request)

    from django.template import loader
    from bidding.views import my_render

    t = loader.get_template(template_name)
    c = RequestContext(
        request, {
            'form': form,
            redirect_field_name: redirect_to,
            'site': current_site,
            'site_name': current_site.name,
        })
    block_login = (t.render(c))
    return HttpResponse(
        my_render(
            request, {
                'form_login': block_login,
                'page_title': 'Login',
                'page_description': 'Login'
            }, 'login'))
예제 #4
0
def submit_policy_authentication():
    form = AuthenticationForm(csrf_enabled=False)

    if form.validate_on_submit():
        patient_id = form.identifier.data
        redirected_url = '/patient/' + patient_id

        return redirect(redirected_url)

    return render_template('authentication.html',form=form)
예제 #5
0
def LoginUser(request):
    if request.method=='POST':
        username = request.POST['username']
        password = request.POST['password']
        user = authenticate(username=username, password=password)
        if user is not None:
            return render(request, 'login/main.html', {})
        else:
            return render(request, 'login/start.html', {})
    else:
        form = AuthenticationForm()
        return render(request, 'login/login.html', {'form':form})
예제 #6
0
def signup():
    form = AuthenticationForm()

    if request.method == 'GET':
        return render_template('signup.html', form=form)

    user = User(username=request.form['username'],
                password=request.form['password'])
    db.session.add(user)
    db.session.commit()
    login_user(user)
    return redirect(url_for('dashboard'))
예제 #7
0
def index():
    form = AuthenticationForm()

    if request.method == 'GET':
        return render_template('index.html', form=form)

    username = request.form['username']
    password = request.form['password']
    registered_user = User.query.filter_by(username=username, password=password).first()
    if registered_user is None:
        flash('Username or Password is invalid', 'error')
        return redirect(url_for('index'))
    login_user(registered_user)
    return redirect(url_for('dashboard'))
예제 #8
0
def authenticate(project_id=None):
    """Authentication form"""
    form = AuthenticationForm()
    if not form.id.data and request.args.get('project_id'):
        form.id.data = request.args['project_id']
    project_id = form.id.data
    if project_id is None:
        #User doesn't provide project identifier, return to authenticate form
        msg = _("You need to enter a project identifier")
        form.errors["id"] = [msg]
        return render_template("authenticate.html", form=form)
    else:
        project = Project.query.get(project_id)

    create_project = False  # We don't want to create the project by default
    if not project:
        # But if the user try to connect to an unexisting project, we will
        # propose him a link to the creation form.
        if request.method == "POST":
            form.validate()
        else:
            create_project = project_id

    else:
        # if credentials are already in session, redirect
        if project_id in session and project.password == session[project_id]:
            setattr(g, 'project', project)
            return redirect(url_for(".list_bills"))

        # else process the form
        if request.method == "POST":
            if form.validate():
                if not form.password.data == project.password:
                    msg = _("This private code is not the right one")
                    form.errors['password'] = [msg]
                else:
                    # maintain a list of visited projects
                    if "projects" not in session:
                        session["projects"] = []
                    # add the project on the top of the list
                    session["projects"].insert(0, (project_id, project.name))
                    session[project_id] = form.password.data
                    session.update()
                    setattr(g, 'project', project)
                    return redirect(url_for(".list_bills"))

    return render_template("authenticate.html",
                           form=form,
                           create_project=create_project)
예제 #9
0
def accounts(request):
    login_form = AuthenticationForm()
    return {'login_form': login_form}
예제 #10
0
def authorize(request):
    result = get_environment(request)
    result.update(csrf(request))

    # 验证是否为登录表单
    # TODO 当系统有初始化、登录以外的入口时,此处需要改进(SunFulong@2014-1-7)
    form = AuthenticationForm(request.POST)

    # 非登录表单,返回登录画面
    if not form.is_valid():
        # 验证应用端身份
        form, client = verify_client(request.REQUEST)
        if issubclass(form.__class__, HttpResponse):
            return form

        result.update({'name': client.name})
        request.session.set_expiry(0)
        request.session.update(form.cleaned_data)

        return render_to_response('oauth/authorize.html', result)
    # 是登录表单,进行相关验证
    else:
        action = form.cleaned_data['action']
        username = form.cleaned_data['username']
        domain = form.cleaned_data['domain']
        password = form.cleaned_data['password']

        # 验证应用端身份
        form, client = verify_client(request.REQUEST)
        if issubclass(form.__class__, HttpResponse):
            return form

        result.update({'name': client.name})
        response_type = form.cleaned_data['response_type']
        client_id = form.cleaned_data['client_id']
        redirect_uri = request.session['redirect_uri']
        scope = request.session['scope']
        state = request.session['state']

        # 处理code请求
        if response_type == 'code':
            # 处理登录以外的请求
            if not action.lower() == 'login'.lower():
                return callback_client(redirect_uri + '?error=access_denied',
                                       state)

            # 验证表单合法性
            if not username or not domain or not password:
                result.update({'error': '请输入邮箱地址及密码'})
                return render_to_response('oauth/authorize.html', result)

            # 验证用户合法性
            user = authenticate(email=username + '@' + domain,
                                password=password)
            if not user:
                result.update({'error': '邮箱地址或密码错误,请重新输入'})
                return render_to_response('oauth/authorize.html', result)

            # 生成code
            code = AuthorizationCode(client=client,
                                     user=user,
                                     redirect_uri=redirect_uri,
                                     expire_time=datetime.datetime.now() +
                                     datetime.timedelta(minutes=10))
            code.save()

            return callback_client(
                redirect_uri + '?code=' +
                urlsafe_base64_encode(code.code.bytes), state)
        else:
            return callback_client(
                redirect_uri + '?error=unsupported_response_type', state), None