Skip to content

Commit

Permalink
Add SynonymProperty for Ming for groups and permissions
Browse files Browse the repository at this point in the history
  • Loading branch information
amol- committed Sep 13, 2011
1 parent 8e1a8b5 commit b11e6cc
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 3 deletions.
2 changes: 1 addition & 1 deletion tg/configuration.py
Expand Up @@ -660,7 +660,7 @@ def add_auth_middleware(self, app, skip_authentication):
from repoze.what.plugins.quickstart import setup_sql_auth
app = setup_sql_auth(app, skip_authentication=skip_authentication, **auth_args)
elif self.auth_backend == "ming":
from repoze_ming import setup_ming_auth
from ming_tools import setup_ming_auth
app = setup_ming_auth(app, skip_authentication=skip_authentication, **auth_args)
return app

Expand Down
33 changes: 31 additions & 2 deletions tg/repoze_ming.py → tg/ming_tools.py
Expand Up @@ -4,6 +4,35 @@
from repoze.who.plugins.auth_tkt import AuthTktCookiePlugin
from repoze.who.middleware import PluggableAuthenticationMiddleware

from ming.orm.property import ORMProperty

class SynonymProperty(ORMProperty):
include_in_repr = True

def __init__(self, getter, setter=None):
self.getter = getter
self.setter = setter
self.name = None
self.cls = None

def __get__(self, instance, cls=None):
return self.getter(instance)

def __set__(self, instance, value):
if not self.setter:
raise TypeError, 'read-only property'
else:
self.setter(instance, value)

def compile(self, mapper):
pass

def repr(self, doc):
return repr(self)

def __repr__(self):
return '<%s>' % (self.__class__.__name__,)

class MingAuthenticatorPlugin(object):
implements(IAuthenticator)

Expand All @@ -30,7 +59,7 @@ def add_metadata(self, environ, identity):
identity['user'] = self.user_class.query.get(user_name=identity['repoze.who.userid'])

if identity['user']:
identity['groups'] = identity['user'].groups
identity['groups'] = [g.group_name for g in identity['user'].groups]
identity['permissions'] = [p.permission_name for p in identity['user'].permissions]
else:
identity['groups'] = []
Expand Down Expand Up @@ -78,4 +107,4 @@ def setup_ming_auth(app, skip_authentication, **auth_args):
classifier=default_request_classifier,
challenge_decider=default_challenge_decider)

return app
return app

0 comments on commit b11e6cc

Please sign in to comment.