summaryrefslogtreecommitdiffstats
path: root/ipa-server
diff options
context:
space:
mode:
authorKevin McCarthy <kmccarth@redhat.com>2007-10-08 09:54:13 -0700
committerKevin McCarthy <kmccarth@redhat.com>2007-10-08 09:54:13 -0700
commitaaa992b74405f41e2f51d1fb2946c57303c3de07 (patch)
treeedc1c5e6f2f9b3d57f7004429e138b6d6d473e5a /ipa-server
parent3f271a875fa3453de6d2de69ec9360a5ef55f93d (diff)
downloadfreeipa-aaa992b74405f41e2f51d1fb2946c57303c3de07.tar.gz
freeipa-aaa992b74405f41e2f51d1fb2946c57303c3de07.tar.xz
freeipa-aaa992b74405f41e2f51d1fb2946c57303c3de07.zip
Fix the webgui to allocate a new IPAClient for each request.
Diffstat (limited to 'ipa-server')
-rw-r--r--ipa-server/ipa-gui/ipagui/subcontrollers/group.py24
-rw-r--r--ipa-server/ipa-gui/ipagui/subcontrollers/ipacontroller.py12
-rw-r--r--ipa-server/ipa-gui/ipagui/subcontrollers/user.py30
3 files changed, 40 insertions, 26 deletions
diff --git a/ipa-server/ipa-gui/ipagui/subcontrollers/group.py b/ipa-server/ipa-gui/ipagui/subcontrollers/group.py
index c54bbb4a0..9a54f91fa 100644
--- a/ipa-server/ipa-gui/ipagui/subcontrollers/group.py
+++ b/ipa-server/ipa-gui/ipagui/subcontrollers/group.py
@@ -1,4 +1,3 @@
-import os
from pickle import dumps, loads
from base64 import b64encode, b64decode
@@ -12,15 +11,11 @@ from turbogears import identity
from ipacontroller import IPAController
import ipa.config
-import ipa.ipaclient
import ipa.group
from ipa.entity import utf8_encode_values
from ipa import ipaerror
import ipagui.forms.group
-ipa.config.init_config()
-client = ipa.ipaclient.IPAClient(True)
-
group_new_form = ipagui.forms.group.GroupNewForm()
group_edit_form = ipagui.forms.group.GroupEditForm()
@@ -45,7 +40,7 @@ class GroupController(IPAController):
if tg_errors:
turbogears.flash("There was a problem with the form!")
- client.set_krbccache(os.environ["KRB5CCNAME"])
+ client = self.get_ipaclient()
return dict(form=group_new_form, group={})
@@ -54,7 +49,7 @@ class GroupController(IPAController):
def create(self, **kw):
"""Creates a new group"""
self.restrict_post()
- client.set_krbccache(os.environ["KRB5CCNAME"])
+ client = self.get_ipaclient()
if kw.get('submit') == 'Cancel':
turbogears.flash("Add group cancelled")
@@ -135,7 +130,8 @@ class GroupController(IPAController):
def edit_search(self, **kw):
"""Searches for users+groups and displays list of results in a table.
This method is used for the ajax search on the group edit page."""
- client.set_krbccache(os.environ["KRB5CCNAME"])
+ client = self.get_ipaclient()
+
users = []
groups = []
counter = 0
@@ -170,7 +166,8 @@ class GroupController(IPAController):
if tg_errors:
turbogears.flash("There was a problem with the form!")
- client.set_krbccache(os.environ["KRB5CCNAME"])
+ client = self.get_ipaclient()
+
try:
group = client.get_group_by_cn(cn, group_fields)
@@ -216,7 +213,8 @@ class GroupController(IPAController):
def update(self, **kw):
"""Updates an existing group"""
self.restrict_post()
- client.set_krbccache(os.environ["KRB5CCNAME"])
+ client = self.get_ipaclient()
+
if kw.get('submit') == 'Cancel Edit':
turbogears.flash("Edit group cancelled")
raise turbogears.redirect('/group/show', cn=kw.get('cn'))
@@ -321,7 +319,8 @@ class GroupController(IPAController):
@identity.require(identity.not_anonymous())
def list(self, **kw):
"""Search for groups and display results"""
- client.set_krbccache(os.environ["KRB5CCNAME"])
+ client = self.get_ipaclient()
+
groups = None
# counter = 0
criteria = kw.get('criteria')
@@ -344,7 +343,8 @@ class GroupController(IPAController):
@identity.require(identity.not_anonymous())
def show(self, cn):
"""Retrieve a single group for display"""
- client.set_krbccache(os.environ["KRB5CCNAME"])
+ client = self.get_ipaclient()
+
try:
group = client.get_group_by_cn(cn, group_fields)
group_dict = group.toDict()
diff --git a/ipa-server/ipa-gui/ipagui/subcontrollers/ipacontroller.py b/ipa-server/ipa-gui/ipagui/subcontrollers/ipacontroller.py
index 77ebe8dd0..e003ab96d 100644
--- a/ipa-server/ipa-gui/ipagui/subcontrollers/ipacontroller.py
+++ b/ipa-server/ipa-gui/ipagui/subcontrollers/ipacontroller.py
@@ -1,3 +1,5 @@
+import os
+
import cherrypy
import turbogears
from turbogears import controllers, expose, flash
@@ -6,12 +8,22 @@ from turbogears import widgets, paginate
from turbogears import error_handler
from turbogears import identity
+import ipa.ipaclient
+import ipa.config
+
+ipa.config.init_config()
+
class IPAController(controllers.Controller):
def restrict_post(self):
if cherrypy.request.method != "POST":
turbogears.flash("This method only accepts posts")
raise turbogears.redirect("/")
+ def get_ipaclient(self):
+ client = ipa.ipaclient.IPAClient(True)
+ client.set_krbccache(os.environ["KRB5CCNAME"])
+ return client
+
def utf8_encode(self, value):
if value != None:
value = value.encode('utf-8')
diff --git a/ipa-server/ipa-gui/ipagui/subcontrollers/user.py b/ipa-server/ipa-gui/ipagui/subcontrollers/user.py
index 40d57510d..1603ac6dc 100644
--- a/ipa-server/ipa-gui/ipagui/subcontrollers/user.py
+++ b/ipa-server/ipa-gui/ipagui/subcontrollers/user.py
@@ -1,4 +1,3 @@
-import os
import re
import random
from pickle import dumps, loads
@@ -13,16 +12,11 @@ from turbogears import error_handler
from turbogears import identity
from ipacontroller import IPAController
-import ipa.config
-import ipa.ipaclient
import ipa.user
from ipa.entity import utf8_encode_values
from ipa import ipaerror
import ipagui.forms.user
-ipa.config.init_config()
-client = ipa.ipaclient.IPAClient(True)
-
password_chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
user_new_form = ipagui.forms.user.UserNewForm()
@@ -50,7 +44,8 @@ class UserController(IPAController):
def create(self, **kw):
"""Creates a new user"""
self.restrict_post()
- client.set_krbccache(os.environ["KRB5CCNAME"])
+ client = self.get_ipaclient()
+
if kw.get('submit') == 'Cancel':
turbogears.flash("Add user cancelled")
raise turbogears.redirect('/user/list')
@@ -171,7 +166,8 @@ class UserController(IPAController):
def edit_search(self, **kw):
"""Searches for groups and displays list of results in a table.
This method is used for the ajax search on the user edit page."""
- client.set_krbccache(os.environ["KRB5CCNAME"])
+ client = self.get_ipaclient()
+
groups = []
groups_counter = 0
searchlimit = 100
@@ -196,7 +192,8 @@ class UserController(IPAController):
if tg_errors:
turbogears.flash("There was a problem with the form!")
- client.set_krbccache(os.environ["KRB5CCNAME"])
+ client = self.get_ipaclient()
+
try:
user = client.get_user_by_uid(uid, user_fields)
user_dict = user.toDict()
@@ -225,7 +222,8 @@ class UserController(IPAController):
def update(self, **kw):
"""Updates an existing user"""
self.restrict_post()
- client.set_krbccache(os.environ["KRB5CCNAME"])
+ client = self.get_ipaclient()
+
if kw.get('submit') == 'Cancel Edit':
turbogears.flash("Edit user cancelled")
raise turbogears.redirect('/user/show', uid=kw.get('uid'))
@@ -376,7 +374,8 @@ class UserController(IPAController):
@identity.require(identity.not_anonymous())
def list(self, **kw):
"""Searches for users and displays list of results"""
- client.set_krbccache(os.environ["KRB5CCNAME"])
+ client = self.get_ipaclient()
+
users = None
counter = 0
uid = kw.get('uid')
@@ -399,7 +398,8 @@ class UserController(IPAController):
@identity.require(identity.not_anonymous())
def show(self, uid):
"""Retrieve a single user for display"""
- client.set_krbccache(os.environ["KRB5CCNAME"])
+ client = self.get_ipaclient()
+
try:
user = client.get_user_by_uid(uid, user_fields)
user_groups = client.get_groups_by_member(user.dn, ['cn'])
@@ -453,7 +453,8 @@ class UserController(IPAController):
if (len(givenname) == 0) or (len(sn) == 0):
return ""
- client.set_krbccache(os.environ["KRB5CCNAME"])
+ client = self.get_ipaclient()
+
givenname = givenname.lower()
sn = sn.lower()
@@ -503,7 +504,8 @@ class UserController(IPAController):
if (len(givenname) == 0) or (len(sn) == 0):
return ""
- client.set_krbccache(os.environ["KRB5CCNAME"])
+ client = self.get_ipaclient()
+
givenname = givenname.lower()
sn = sn.lower()