authentication: allow setting extern type with registration.
- This will allow external identity plugins to define proper externs instead of always using "rhodecode" one
This commit is contained in:
parent
7f5b660427
commit
64c5591c2e
2 changed files with 23 additions and 6 deletions
|
|
@ -273,16 +273,26 @@ class LoginView(BaseAppView):
|
|||
route_name='register', request_method='POST',
|
||||
renderer='rhodecode:templates/register.mako')
|
||||
def register_post(self):
|
||||
from rhodecode.authentication.plugins import auth_rhodecode
|
||||
|
||||
self.load_default_context()
|
||||
captcha = self._get_captcha_data()
|
||||
auto_active = 'hg.register.auto_activate' in User.get_default_user()\
|
||||
.AuthUser().permissions['global']
|
||||
|
||||
extern_name = auth_rhodecode.RhodeCodeAuthPlugin.uid
|
||||
extern_type = auth_rhodecode.RhodeCodeAuthPlugin.uid
|
||||
|
||||
register_form = RegisterForm(self.request.translate)()
|
||||
try:
|
||||
|
||||
form_result = register_form.to_python(self.request.POST)
|
||||
form_result['active'] = auto_active
|
||||
external_identity = self.request.POST.get('external_identity')
|
||||
|
||||
if external_identity:
|
||||
extern_name = external_identity
|
||||
extern_type = external_identity
|
||||
|
||||
if captcha.active:
|
||||
captcha_status, captcha_message = self.validate_captcha(
|
||||
|
|
@ -295,11 +305,17 @@ class LoginView(BaseAppView):
|
|||
raise formencode.Invalid(
|
||||
_msg, _value, None, error_dict=error_dict)
|
||||
|
||||
new_user = UserModel().create_registration(form_result)
|
||||
new_user = UserModel().create_registration(
|
||||
form_result, extern_name=extern_name, extern_type=extern_type)
|
||||
|
||||
action_data = {'data': new_user.get_api_data(),
|
||||
'user_agent': self.request.user_agent}
|
||||
|
||||
|
||||
|
||||
if external_identity:
|
||||
action_data['external_identity'] = external_identity
|
||||
|
||||
audit_user = audit_logger.UserWrap(
|
||||
username=new_user.username,
|
||||
user_id=new_user.user_id,
|
||||
|
|
|
|||
|
|
@ -344,8 +344,8 @@ class UserModel(BaseModel):
|
|||
new_user.is_new_user = not edit
|
||||
# for users that didn's specify auth type, we use RhodeCode built in
|
||||
from rhodecode.authentication.plugins import auth_rhodecode
|
||||
extern_name = extern_name or auth_rhodecode.RhodeCodeAuthPlugin.name
|
||||
extern_type = extern_type or auth_rhodecode.RhodeCodeAuthPlugin.name
|
||||
extern_name = extern_name or auth_rhodecode.RhodeCodeAuthPlugin.uid
|
||||
extern_type = extern_type or auth_rhodecode.RhodeCodeAuthPlugin.uid
|
||||
|
||||
try:
|
||||
new_user.username = username
|
||||
|
|
@ -392,14 +392,15 @@ class UserModel(BaseModel):
|
|||
log.error(traceback.format_exc())
|
||||
raise
|
||||
|
||||
def create_registration(self, form_data):
|
||||
def create_registration(self, form_data,
|
||||
extern_name='rhodecode', extern_type='rhodecode'):
|
||||
from rhodecode.model.notification import NotificationModel
|
||||
from rhodecode.model.notification import EmailNotificationModel
|
||||
|
||||
try:
|
||||
form_data['admin'] = False
|
||||
form_data['extern_name'] = 'rhodecode'
|
||||
form_data['extern_type'] = 'rhodecode'
|
||||
form_data['extern_name'] = extern_name
|
||||
form_data['extern_type'] = extern_type
|
||||
new_user = self.create(form_data)
|
||||
|
||||
self.sa.add(new_user)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue