123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- # -*- coding: utf-8 -*-
-
- import tg
- import repoze.who.api
-
- from tg import _compat
- from pboard.lib import base as plb
- from pboard.lib import dbapi as pld
- from pboard import model as pm
- from pboard.model import data as pmd
- from pboard.model import serializers as pms
-
- from tg.i18n import ugettext as _
-
- class PODPublicApiController(plb.BaseController):
-
- @tg.expose()
- def create_account(self, email='', password='', retyped_password='', real_name='', **kw):
- if email=='' or password=='' or retyped_password=='':
- tg.flash(_('Account creation error: please fill all the fields'), 'error')
- tg.redirect(tg.lurl('/'))
- elif password!=retyped_password:
- tg.flash(_('Account creation error: passwords do not match'), 'error')
- tg.redirect(tg.lurl('/'))
- else:
- loExistingUser = pld.PODStaticController.getUserByEmailAddress(email)
- if loExistingUser!=None:
- tg.flash(_('Account creation error: account already exist: %s') % (email), 'error')
- tg.redirect(tg.lurl('/'))
-
- loNewAccount = pld.PODStaticController.createUser()
- loNewAccount.email_address = email
- loNewAccount.display_name = real_name if real_name!='' else email
- loNewAccount.password = password
-
- loUserGroup = pld.PODStaticController.getGroup('user')
- loUserGroup.users.append(loNewAccount)
-
- pm.DBSession.add(loNewAccount)
- pm.DBSession.flush()
- pm.DBSession.refresh(loNewAccount)
-
- loUserSpecificGroup = pld.PODStaticController.createGroup()
-
- loUserSpecificGroup.group_id = 0-loNewAccount.user_id # group id of a given user is the opposite of the user id
- loUserSpecificGroup.group_name = 'user_%d' % loNewAccount.user_id
- loUserSpecificGroup.personnal_group = True
- loUserSpecificGroup.users.append(loNewAccount)
-
- pm.DBSession.flush()
-
- tg.flash(_('Account successfully created: %s') % (email), 'info')
-
- who_api = repoze.who.api.get_api(tg.request.environ)
- creds = {}
- creds['login'] = email
- creds['password'] = password
- authenticated, headers = who_api.login(creds)
- tg.response.headers = headers
-
- tg.redirect(tg.lurl('/'))
-
|