##// END OF EJS Templates
Add hgsubversion entry for RhodeCode UI (disabled by default)
Add hgsubversion entry for RhodeCode UI (disabled by default)

File last commit:

r2662:91c442a4 beta
r2705:bf177b49 beta
Show More
ldap_settings.py
150 lines | 5.3 KiB | text/x-python | PythonLexer
fixes #77 moved out ldap config to it's own section
r769 # -*- coding: utf-8 -*-
"""
updated docs on every controller
r861 rhodecode.controllers.admin.ldap_settings
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fixes #77 moved out ldap config to it's own section
r769
ldap controller for RhodeCode
source code cleanup: remove trailing white space, normalize file endings
r1203
fixes #77 moved out ldap config to it's own section
r769 :created_on: Nov 26, 2010
:author: marcink
2012 copyrights
r1824 :copyright: (C) 2010-2012 Marcin Kuzminski <marcin@python-works.com>
fixes #77 moved out ldap config to it's own section
r769 :license: GPLv3, see COPYING for more details.
"""
fixed license issue #149
r1206 # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
source code cleanup: remove trailing white space, normalize file endings
r1203 #
fixes #77 moved out ldap config to it's own section
r769 # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
source code cleanup: remove trailing white space, normalize file endings
r1203 #
fixes #77 moved out ldap config to it's own section
r769 # You should have received a copy of the GNU General Public License
fixed license issue #149
r1206 # along with this program. If not, see <http://www.gnu.org/licenses/>.
fixes #77 moved out ldap config to it's own section
r769 import logging
import formencode
import traceback
from formencode import htmlfill
from pylons import request, response, session, tmpl_context as c, url
from pylons.controllers.util import abort, redirect
from pylons.i18n.translation import _
added some fixes to LDAP form re-submition, new simples ldap-settings getter....
r1292 from sqlalchemy.exc import DatabaseError
fixes #77 moved out ldap config to it's own section
r769 from rhodecode.lib.base import BaseController, render
from rhodecode.lib import helpers as h
from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator
added some fixes to LDAP form re-submition, new simples ldap-settings getter....
r1292 from rhodecode.lib.exceptions import LdapImportError
fixes #77 moved out ldap config to it's own section
r769 from rhodecode.model.forms import LdapSettingsForm
refactoring of models names for repoGroup permissions
r1633 from rhodecode.model.db import RhodeCodeSetting
sqlalchemy sessions cleanup in admin...
r2662 from rhodecode.model.meta import Session
fixes #77 moved out ldap config to it's own section
r769
log = logging.getLogger(__name__)
class LdapSettingsController(BaseController):
PEP8ify - controllers
r1245 search_scope_choices = [('BASE', _('BASE'),),
Thayne Harbaugh
Improve LDAP authentication...
r991 ('ONELEVEL', _('ONELEVEL'),),
PEP8ify - controllers
r1245 ('SUBTREE', _('SUBTREE'),),
Thayne Harbaugh
Improve LDAP authentication...
r991 ]
search_scope_default = 'SUBTREE'
PEP8ify - controllers
r1245 tls_reqcert_choices = [('NEVER', _('NEVER'),),
('ALLOW', _('ALLOW'),),
('TRY', _('TRY'),),
Thayne Harbaugh
Improve LDAP authentication...
r991 ('DEMAND', _('DEMAND'),),
PEP8ify - controllers
r1245 ('HARD', _('HARD'),),
Thayne Harbaugh
Improve LDAP authentication...
r991 ]
tls_reqcert_default = 'DEMAND'
"Lorenzo M. Catucci"
Enable start_tls connection encryption.
r1290 tls_kind_choices = [('PLAIN', _('No encryption'),),
('LDAPS', _('LDAPS connection'),),
('START_TLS', _('START_TLS on LDAP connection'),)
]
tls_kind_default = 'PLAIN'
fixes #77 moved out ldap config to it's own section
r769 @LoginRequired()
@HasPermissionAllDecorator('hg.admin')
def __before__(self):
c.admin_user = session.get('admin_user')
c.admin_username = session.get('admin_username')
Thayne Harbaugh
Improve LDAP authentication...
r991 c.search_scope_choices = self.search_scope_choices
PEP8ify - controllers
r1245 c.tls_reqcert_choices = self.tls_reqcert_choices
"Lorenzo M. Catucci"
Enable start_tls connection encryption.
r1290 c.tls_kind_choices = self.tls_kind_choices
added some fixes to LDAP form re-submition, new simples ldap-settings getter....
r1292
c.search_scope_cur = self.search_scope_default
c.tls_reqcert_cur = self.tls_reqcert_default
c.tls_kind_cur = self.tls_kind_default
fixes #77 moved out ldap config to it's own section
r769 super(LdapSettingsController, self).__before__()
def index(self):
refactoring of models names for repoGroup permissions
r1633 defaults = RhodeCodeSetting.get_ldap_settings()
Thayne Harbaugh
Improve LDAP authentication...
r991 c.search_scope_cur = defaults.get('ldap_search_scope')
PEP8ify - controllers
r1245 c.tls_reqcert_cur = defaults.get('ldap_tls_reqcert')
"Lorenzo M. Catucci"
Enable start_tls connection encryption.
r1290 c.tls_kind_cur = defaults.get('ldap_tls_kind')
fixes #77 moved out ldap config to it's own section
r769
return htmlfill.render(
render('admin/ldap/ldap.html'),
defaults=defaults,
encoding="UTF-8",
force_defaults=True,)
def ldap_settings(self):
fixed spelling mistakes, and some minor docs bugs
r860 """POST ldap create and store ldap settings"""
fixes #77 moved out ldap config to it's own section
r769
Thayne Harbaugh
Improve LDAP authentication...
r991 _form = LdapSettingsForm([x[0] for x in self.tls_reqcert_choices],
"Lorenzo M. Catucci"
Enable start_tls connection encryption.
r1290 [x[0] for x in self.search_scope_choices],
[x[0] for x in self.tls_kind_choices])()
fixed #374 LDAP config is now saved but deactivated if python-ldap lib is missing
r2193 # check the ldap lib
ldap_active = False
try:
import ldap
ldap_active = True
except ImportError:
pass
fixes #77 moved out ldap config to it's own section
r769
try:
form_result = _form.to_python(dict(request.POST))
fixed #374 LDAP config is now saved but deactivated if python-ldap lib is missing
r2193
fixes #77 moved out ldap config to it's own section
r769 try:
for k, v in form_result.items():
if k.startswith('ldap_'):
fixed #374 LDAP config is now saved but deactivated if python-ldap lib is missing
r2193 if k == 'ldap_active':
v = ldap_active
refactoring of models names for repoGroup permissions
r1633 setting = RhodeCodeSetting.get_by_name(k)
fixes #77 moved out ldap config to it's own section
r769 setting.app_settings_value = v
sqlalchemy sessions cleanup in admin...
r2662 Session().add(setting)
fixes #77 moved out ldap config to it's own section
r769
sqlalchemy sessions cleanup in admin...
r2662 Session().commit()
fixes #77 moved out ldap config to it's own section
r769 h.flash(_('Ldap settings updated successfully'),
fixed #374 LDAP config is now saved but deactivated if python-ldap lib is missing
r2193 category='success')
if not ldap_active:
#if ldap is missing send an info to user
h.flash(_('Unable to activate ldap. The "python-ldap" library '
'is missing.'), category='warning')
fixes #77 moved out ldap config to it's own section
r769 except (DatabaseError,):
raise
except formencode.Invalid, errors:
added some fixes to LDAP form re-submition, new simples ldap-settings getter....
r1292 e = errors.error_dict or {}
fixes #77 moved out ldap config to it's own section
r769
return htmlfill.render(
render('admin/ldap/ldap.html'),
defaults=errors.value,
added some fixes to LDAP form re-submition, new simples ldap-settings getter....
r1292 errors=e,
fixes #77 moved out ldap config to it's own section
r769 prefix_error=False,
encoding="UTF-8")
except Exception:
log.error(traceback.format_exc())
fixed spelling mistakes, and some minor docs bugs
r860 h.flash(_('error occurred during update of ldap settings'),
fixes #77 moved out ldap config to it's own section
r769 category='error')
return redirect(url('ldap_home'))