comparison pylons_app/controllers/login.py @ 417:3ed2d46a2ca7

permission refactoring, Implemented views for default permissions, fixes #23 user registration is controlled by permission system. Implemented manual registration option websetup fills default permissions
author Marcin Kuzminski <marcin@python-works.com>
date Sat, 21 Aug 2010 16:34:37 +0200
parents 98abf8953b87
children 63c697d1a631
comparison
equal deleted inserted replaced
416:25ab66a26975 417:3ed2d46a2ca7
15 # 15 #
16 # You should have received a copy of the GNU General Public License 16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, write to the Free Software 17 # along with this program; if not, write to the Free Software
18 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 18 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19 # MA 02110-1301, USA. 19 # MA 02110-1301, USA.
20
21 """
22 Created on April 22, 2010
23 login controller for pylons
24 @author: marcink
25 """
20 from formencode import htmlfill 26 from formencode import htmlfill
21 from pylons import request, response, session, tmpl_context as c, url 27 from pylons import request, response, session, tmpl_context as c, url
22 from pylons.controllers.util import abort, redirect 28 from pylons.controllers.util import abort, redirect
23 from pylons_app.lib.auth import AuthUser 29 from pylons_app.lib.auth import AuthUser, HasPermissionAnyDecorator
24 from pylons_app.lib.base import BaseController, render 30 from pylons_app.lib.base import BaseController, render
25 from pylons_app.model.forms import LoginForm, RegisterForm 31 from pylons_app.model.forms import LoginForm, RegisterForm
26 from pylons_app.model.user_model import UserModel 32 from pylons_app.model.user_model import UserModel
27 import formencode 33 import formencode
28 import logging 34 import logging
29 """
30 Created on April 22, 2010
31 login controller for pylons
32 @author: marcink
33 """
34 35
35 log = logging.getLogger(__name__) 36 log = logging.getLogger(__name__)
36 37
37 class LoginController(BaseController): 38 class LoginController(BaseController):
38 39
59 prefix_error=False, 60 prefix_error=False,
60 encoding="UTF-8") 61 encoding="UTF-8")
61 62
62 return render('/login.html') 63 return render('/login.html')
63 64
64 65 @HasPermissionAnyDecorator('hg.admin', 'hg.register.auto_activate', 'hg.register.manual_activate')
65 def register(self): 66 def register(self):
67 user_model = UserModel()
68 c.auto_active = False
69 for perm in user_model.get_default().user_perms:
70 if perm.permission.permission_name == 'hg.register.auto_activate':
71 c.auto_active = False
72 break
73
66 if request.POST: 74 if request.POST:
67 user_model = UserModel() 75
68 register_form = RegisterForm()() 76 register_form = RegisterForm()()
69 try: 77 try:
70 form_result = register_form.to_python(dict(request.POST)) 78 form_result = register_form.to_python(dict(request.POST))
79 form_result['active'] = c.auto_active
71 user_model.create_registration(form_result) 80 user_model.create_registration(form_result)
72 return redirect(url('login_home')) 81 return redirect(url('login_home'))
73 82
74 except formencode.Invalid as errors: 83 except formencode.Invalid as errors:
75 return htmlfill.render( 84 return htmlfill.render(