auth: logout: start implementation (expire cookie)
This commit is contained in:
parent
d128c5f138
commit
67985a6bdb
2 changed files with 11 additions and 9 deletions
|
@ -48,11 +48,8 @@ class OidcAuthentication:
|
|||
Authenticator(request).login()
|
||||
|
||||
def logout(self, request):
|
||||
print('*** OidcAuthentication: logout')
|
||||
Authenticator(request).logout()
|
||||
|
||||
JwtAuthentication = OidcAuthentication # old name - still used?
|
||||
|
||||
authentication = OidcAuthentication(None)
|
||||
|
||||
|
||||
|
@ -72,7 +69,6 @@ class Principal:
|
|||
@property
|
||||
def groups(self):
|
||||
groups = [self.group_prefix + g for g in self.data.get('groups', [])]
|
||||
print('*** Principal.groups', groups)
|
||||
return groups
|
||||
|
||||
def asDict(self):
|
||||
|
@ -125,7 +121,7 @@ class Authenticator(DummyFolder):
|
|||
)
|
||||
self.storeSession(dict(state=state, nonce=nonce, code_verifier=codeVerifier))
|
||||
loginUrl = '?'.join((self.params['auth_url'], urlencode(args)))
|
||||
print('***', loginUrl)
|
||||
logger.debug('login: URL %s', loginUrl)
|
||||
req.response.redirect(loginUrl, trusted=True)
|
||||
|
||||
def callback(self):
|
||||
|
@ -163,14 +159,17 @@ class Authenticator(DummyFolder):
|
|||
req.response.redirect(self.reqUrl, trusted=True)
|
||||
|
||||
def logout(self):
|
||||
pass
|
||||
cname = self.params['cookie_name']
|
||||
logger.debug('logout, cookie: %s', cname)
|
||||
self.request.response.expireCookie(cname, path='/')
|
||||
self.request.response.redirect(config.base_url, trusted=True)
|
||||
|
||||
def storeSession(self, data):
|
||||
lifetime = int(self.params['cookie_lifetime'])
|
||||
options = dict(
|
||||
path='/',
|
||||
expires=formatdate(time() + lifetime, localtime=False, usegmt=True),
|
||||
httponly=True,
|
||||
#httponly=True,
|
||||
)
|
||||
options['max-age'] = lifetime
|
||||
domain = self.params['cookie_domain']
|
||||
|
@ -198,7 +197,6 @@ class Authenticator(DummyFolder):
|
|||
|
||||
@register('auth', Root)
|
||||
def authView(context, request):
|
||||
print('*** auth', context, request['PATH_INFO'])
|
||||
return Authenticator(request)
|
||||
|
||||
@register('login', Authenticator)
|
||||
|
@ -213,5 +211,5 @@ def callback(context, request):
|
|||
|
||||
@register('logout', Authenticator)
|
||||
def logout(context, request):
|
||||
print('*** logout', context, request['PATH_INFO'], request.getTraversalStack())
|
||||
context.logout()
|
||||
return DefaultView(context, request)
|
||||
|
|
|
@ -1,9 +1,12 @@
|
|||
# scopes.server.browser
|
||||
|
||||
import json
|
||||
import logging
|
||||
from zope.interface import implementer
|
||||
from scopes.interfaces import IContainer, IReference, IView
|
||||
|
||||
logger = logging.getLogger('server.browser')
|
||||
|
||||
views = {} # registry for all views: {name: {prefix: viewClass, ...}, ...}
|
||||
|
||||
def register(name, *contextTypes):
|
||||
|
@ -29,6 +32,7 @@ def getView(request, ob, name):
|
|||
factory = nameEntry.get('')
|
||||
if factory is None:
|
||||
return None
|
||||
logger.debug('getView: %s %s', ob, request['PATH_INFO'])
|
||||
return factory(ob, request)
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue