def user(self): userid = unauthenticated_userid(self) #print "--- in RequestWithUserAttribute: userid = " + str(userid) if userid is not None: # this should return None if the user doesn't exist # in the database #return dbsession.query('users').filter(user.user_id == userid) return C3sStaff.check_user_or_None(userid) # else: userid == None return userid # pragma: no cover
def accountants_login(request): """ This view lets accountants log in """ logged_in = authenticated_userid(request) #print("authenticated_userid: " + str(logged_in)) log.info("login by %s" % logged_in) if logged_in is not None: # if user is already authenticated return HTTPFound( # redirect her to the dashboard request.route_url('dashboard', number=0,)) class AccountantLogin(colander.MappingSchema): """ colander schema for login form """ login = colander.SchemaNode( colander.String(), title=_(u"login"), oid="login", ) password = colander.SchemaNode( colander.String(), validator=colander.Length(min=5, max=100), widget=deform.widget.PasswordWidget(size=20), title=_(u"password"), oid="password", ) schema = AccountantLogin() form = deform.Form( schema, buttons=[ deform.Button('submit', _(u'Submit')), deform.Button('reset', _(u'Reset')) ], #use_ajax=True, #renderer=zpt_renderer ) # if the form has been used and SUBMITTED, check contents if 'submit' in request.POST: #print("the form was submitted") controls = request.POST.items() try: appstruct = form.validate(controls) except ValidationFailure, e: print(e) request.session.flash( _(u"Please note: There were errors, " "please check the form below."), 'message_above_form', allow_duplicate=False) return{'form': e.render()} # get user and check pw... login = appstruct['login'] password = appstruct['password'] try: checked = C3sStaff.check_password(login, password) except AttributeError: # pragma: no cover checked = False if checked: log.info("password check for %s: good!" % login) headers = remember(request, login) log.info("logging in %s" % login) return HTTPFound( # redirect to accountants dashboard location=route_url( # after successful login 'dashboard', number=0, request=request), headers=headers) else: log.info("password check: failed.")