import re from codado import fromdir, enum from pymongo.uri_parser import parse_uri fromNoms = fromdir(__file__, "..") DBHost = enum(noms={"host": "mongodb://localhost/noms"}, nomsTest={"host": "mongomock://localhost/noms-test"}) # mongomock is broken, we need to maintain our own connection aliases # See https://github.com/vmalloc/mongomock/issues/233 - we must parse # host ourselves and pass in db=, for the benefit of mongomock. DBAlias = enum.fromkeys(DBHost.keys()) def _parseHosts(): """ Build a dict of all of the connections defined by DBHost Doesn't register a default connection yet. """ for k, v in DBHost.items(): parts = parse_uri(v["host"].replace("mongomock", "mongodb")) # hack for a parse_uri restriction DBHost[k]["db"] = parts["database"] _parseHosts()
fromNoms = fromdir(__file__, '..') NOMS_DB_HOST = os.environ.get('NOMS_DB_HOST', 'localhost') DBHost = enum( noms={'host': 'mongodb://%s/noms' % NOMS_DB_HOST}, nomsTest={'host': 'mongomock://localhost/noms-test'}, ) # mongomock is broken, we need to maintain our own connection aliases # See https://github.com/vmalloc/mongomock/issues/233 - we must parse # host ourselves and pass in db=, for the benefit of mongomock. DBAlias = enum.fromkeys(DBHost.keys()) def _parseHosts(): """ Build a dict of all of the connections defined by DBHost Doesn't register a default connection yet. """ for k, v in DBHost.items(): parts = parse_uri(v['host'].replace('mongomock', 'mongodb')) # hack for a parse_uri restriction DBHost[k]['db'] = parts['database'] _parseHosts()
""" Authentication and users """ from mongoengine import fields from codado import enum from noms.rendering import RenderableDocument Roles = enum.fromkeys(['user', 'superuser']) class User(RenderableDocument): """ A person with a login account (or the ANONYMOUS user) """ email = fields.StringField(require=True, unique=True) passwordHash = fields.StringField() roles = fields.ListField(fields.StringField(choices=Roles.keys())) givenName = fields.StringField() familyName = fields.StringField() meta = {'indexes': [ 'email', ]} @classmethod def fromSSO(cls, ssoData): """
from itsdangerous import ( TimedJSONWebSignatureSerializer as Serializer, BadSignature, SignatureExpired) from codado import enum from noms.rendering import RenderableDocument from noms.interface import ICurrentUser from noms import secret Roles = enum.fromkeys([ 'anonymous', 'user', 'superuser', 'localapi', ]) class User(RenderableDocument): """ A person with a login account (or the Anonymous user) """ email = fields.StringField(require=True, unique=True) passwordHash = fields.StringField() roles = fields.ListField(fields.StringField(choices=Roles.keys())) givenName = fields.StringField() familyName = fields.StringField() meta = {'indexes': [