def auth_complete_view(context, request): entry = context.entry if entry.uri is None: # check verified emails if entry.verified: session = ptah.get_session() user = session.query(ptahcrowd.CrowdUser)\ .filter(ptahcrowd.CrowdUser.email == entry.email).first() if user is not None: entry.uri = user.__uri__ else: # create user tinfo = ptahcrowd.get_user_type() user = tinfo.create( name=entry.name, login=entry.email, email=entry.email, password=entry.access_token) session.add(user) session.flush() entry.uri = user.__uri__ user.properties.validated = True else: # verify email return HTTPFound( request.route_url( 'ptah-crowd-verify-email', subpath=(entry.uid,))) return login(entry.uri, request)
def verify_handler(self): data, errors = self.extract() if errors: self.message(errors, 'form-error') return entry = self.entry request = self.request new_user = False email = data['email'] user = self.session.query(ptahcrowd.CrowdUser).filter( ptahcrowd.CrowdUser.email == email).first() if user is None: new_user = True # create user tinfo = ptahcrowd.get_user_type() user = tinfo.create( name=entry.name, login=email, email=email, password=entry.access_token) tinfo.add(user) # fixme: temporary ptah.get_session().flush() uri = user.__uri__ entry.uri = uri entry.email = email else: uri = user.__uri__ data = {'uri': uri, 'email': email, 'uid': entry.uid} t = ptah.token.service.generate(TOKEN_TYPE, json.dumps(data)) template = VerifyTemplate(entry, request, email=email, token=t) template.send() # login if new_user: self.message('Email verification email has been sent.') cfg = ptah.get_settings(ptahcrowd.CFG_ID_CROWD, request.registry) if cfg['validation']: if cfg['allow-unvalidated']: entry.uri = uri return login(uri, request) else: entry.uri = uri return login(uri, request) else: self.message('User with this email already exists. ' 'You have to verify email before you can login.') return HTTPFound(location=request.application_url)
def auth_complete_view(context, request): entry = context.entry if entry.uri is None: # check verified emails if entry.verified: session = ptah.get_session() user = session.query(ptahcrowd.CrowdUser)\ .filter(ptahcrowd.CrowdUser.email == entry.email).first() if user is not None: entry.uri = user.__uri__ else: # create user tinfo = ptahcrowd.get_user_type() user = tinfo.create( name=entry.name, login=entry.email, email=entry.email, password=entry.access_token) session.add(user) session.flush() entry.uri = user.__uri__ user.properties.validated = True else: # verify email return HTTPFound( request.route_url( 'ptahcrowd-verify-email', subpath=(entry.uid,))) return login(entry.uri, request)
def create_admin_user(registry): crowd_cfg = ptah.get_settings(ptahcrowd.CFG_ID_CROWD, registry) if not crowd_cfg['admin-login']: return session = ptah.get_session() ptah_cfg = ptah.get_settings(ptah.CFG_ID_PTAH, registry) rec = session.query(SettingRecord).filter( SettingRecord.name == 'ptahcrowd.admin-uri').first() if rec is not None: user = ptah.resolve(rec.value) if user is not None: return user = session.query(ptahcrowd.CrowdUser).\ filter(ptahcrowd.CrowdUser.username==crowd_cfg['admin-login']).first() if user is None: tinfo = ptahcrowd.get_user_type(registry) log = logging.getLogger('ptahcrowd') log.info("Creating admin user `%s`", crowd_cfg['admin-login']) # create user user = tinfo.create( fullname=crowd_cfg['admin-name'], username=crowd_cfg['admin-login'], email=ptah_cfg['email_from_address']) user.password = ptah.pwd_tool.encode(crowd_cfg['admin-password']) user.validated = True user.suspended = False tinfo.add(user) if crowd_cfg['admin-role']: user.properties['roles'] = (crowd_cfg['admin-role'],) session.add( SettingRecord(name='ptahcrowd.admin-uri', value=user.__uri__))
def create_admin_user(registry): crowd_cfg = ptah.get_settings(ptahcrowd.CFG_ID_CROWD, registry) if not crowd_cfg['admin-login']: return session = ptah.get_session() ptah_cfg = ptah.get_settings(ptah.CFG_ID_PTAH, registry) rec = session.query(SettingRecord).filter( SettingRecord.name == 'ptahcrowd.admin-uri').first() if rec is not None: user = ptah.resolve(rec.value) if user is not None: return user = session.query(ptahcrowd.CrowdUser).\ filter(ptahcrowd.CrowdUser.username==crowd_cfg['admin-login']).first() if user is None: tinfo = ptahcrowd.get_user_type(registry) log = logging.getLogger('ptahcrowd') log.info("Creating admin user `%s`", crowd_cfg['admin-login']) # create user user = tinfo.create(fullname=crowd_cfg['admin-name'], username=crowd_cfg['admin-login'], email=ptah_cfg['email_from_address']) user.password = ptah.pwd_tool.encode(crowd_cfg['admin-password']) user.validated = True user.suspended = False tinfo.add(user) if crowd_cfg['admin-role']: user.properties['roles'] = (crowd_cfg['admin-role'], ) session.add( SettingRecord(name='ptahcrowd.admin-uri', value=user.__uri__))
def verify_handler(self): data, errors = self.extract() if errors: self.add_error_message(errors) return entry = self.entry request = self.request new_user = False email = data['email'] user = self.session.query(ptahcrowd.CrowdUser).filter( ptahcrowd.CrowdUser.email == email).first() if user is None: new_user = True # create user tinfo = ptahcrowd.get_user_type() user = tinfo.create( name=entry.name, login=email, email=email, password=entry.access_token) tinfo.add(user) # fixme: temporary ptah.get_session().flush() uri = user.__uri__ entry.uri = uri entry.email = email else: uri = user.__uri__ data = {'uri': uri, 'email': email, 'uid': entry.uid} t = ptah.token.service.generate(TOKEN_TYPE, json.dumps(data)) template = VerifyTemplate(entry, request, email=email, token=t) template.send() # login if new_user: self.request.add_message('Email verification email has been sent.') cfg = ptah.get_settings(ptahcrowd.CFG_ID_CROWD, request.registry) if cfg['validation']: if cfg['allow-unvalidated']: entry.uri = uri return login(uri, request) else: entry.uri = uri return login(uri, request) else: self.request.add_message( 'User with this email already exists. ' 'You have to verify email before you can login.') return HTTPFound(location=request.application_url)