diff options
author | Rob Crittenden <rcritten@redhat.com> | 2008-01-11 11:44:23 -0500 |
---|---|---|
committer | Rob Crittenden <rcritten@redhat.com> | 2008-01-11 11:44:23 -0500 |
commit | 42d5ddc559bf22792b170bdacaf19996350783e1 (patch) | |
tree | 3f220cc4609cf394c4de994b92fc1ec318c6d758 /ipa-server/ipa-gui | |
parent | 58071a759a22f5029916c170bff33f345a41e5ce (diff) | |
download | freeipa-42d5ddc559bf22792b170bdacaf19996350783e1.tar.gz freeipa-42d5ddc559bf22792b170bdacaf19996350783e1.tar.xz freeipa-42d5ddc559bf22792b170bdacaf19996350783e1.zip |
Service principal deletion
Diffstat (limited to 'ipa-server/ipa-gui')
-rw-r--r-- | ipa-server/ipa-gui/ipagui/subcontrollers/principal.py | 45 | ||||
-rw-r--r-- | ipa-server/ipa-gui/ipagui/templates/principallist.kid | 6 | ||||
-rw-r--r-- | ipa-server/ipa-gui/ipagui/templates/principalshow.kid | 53 |
3 files changed, 102 insertions, 2 deletions
diff --git a/ipa-server/ipa-gui/ipagui/subcontrollers/principal.py b/ipa-server/ipa-gui/ipagui/subcontrollers/principal.py index 27c4f9d63..47deb8879 100644 --- a/ipa-server/ipa-gui/ipagui/subcontrollers/principal.py +++ b/ipa-server/ipa-gui/ipagui/subcontrollers/principal.py @@ -125,6 +125,51 @@ class PrincipalController(IPAController): return dict(principals=principals, hostname=hostname, fields=ipagui.forms.principal.PrincipalFields()) + @expose("ipagui.templates.principalshow") + @identity.require(identity.not_anonymous()) + def show(self, **kw): + """Display a single service principal""" + + try: + princ = kw['principal'] + princ_dn = kw['principal_dn'] + except KeyError, e: + turbogears.flash("Principal show failed. Unable to find key %s" % e) + raise turbogears.redirect("/principal/list") + + principal = {} + + try: + # The principal info is passed in. Not going to both to re-query this. + (service,host) = princ.split('/') + h = host.split('@') + principal['service'] = service + principal['hostname'] = h[0] + principal['principal_dn'] = princ_dn + + return dict(principal=principal) + except: + turbogears.flash("Principal show failed %s" % princ) + raise turbogears.redirect("/") + + @expose() + @identity.require(identity.in_group("admins")) + def delete(self, principal): + """Delete a service principal""" + self.restrict_post() + client = self.get_ipaclient() + + print "Deleting %s" % principal + + try: + client.delete_service_principal(principal) + + turbogears.flash("Service principal deleted") + raise turbogears.redirect('/principal/list') + except (SyntaxError, ipaerror.IPAError), e: + turbogears.flash("Service principal deletion failed: " + str(e) + "<br/>" + e.detail[0]['desc']) + raise turbogears.redirect('/principal/list') + @validate(form=principal_new_form) @identity.require(identity.not_anonymous()) def principalcreatevalidate(self, tg_errors=None, **kw): diff --git a/ipa-server/ipa-gui/ipagui/templates/principallist.kid b/ipa-server/ipa-gui/ipagui/templates/principallist.kid index ae8bdda46..8da9c15e3 100644 --- a/ipa-server/ipa-gui/ipagui/templates/principallist.kid +++ b/ipa-server/ipa-gui/ipagui/templates/principallist.kid @@ -33,10 +33,12 @@ <tbody> <tr py:for="principal in principals"> <td> - ${principal.hostname} + <a href="${tg.url('/principal/show',principal=principal.krbprincipalname,principal_dn=principal.dn)}" + >${principal.hostname}</a> </td> <td> - ${principal.service} + <a href="${tg.url('/principal/show',principal=principal.krbprincipalname,principal_dn=principal.dn)}" + >${principal.service}</a> </td> </tr> </tbody> diff --git a/ipa-server/ipa-gui/ipagui/templates/principalshow.kid b/ipa-server/ipa-gui/ipagui/templates/principalshow.kid new file mode 100644 index 000000000..c93622d3f --- /dev/null +++ b/ipa-server/ipa-gui/ipagui/templates/principalshow.kid @@ -0,0 +1,53 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#" + py:extends="'policylayout.kid'"> +<head> +<meta content="text/html; charset=utf-8" http-equiv="Content-Type" py:replace="''"/> +<title>View Service Principal</title> +</head> +<body> + + <script type="text/javascript" charset="utf-8" src="${tg.url('/static/javascript/tablekit.js')}"></script> + + <script type="text/javascript" charset="utf-8"> + function confirmDelete() { + if (confirm("Are you sure you want to delete this service principal?")) { + $('deleteform').submit(); + } + return false; + } + </script> + + <form id='deleteform' + method="post" action="${tg.url('/principal/delete')}"> + + <input type="hidden" name="principal" value="${principal.get('principal_dn')}" /> + + <input type="submit" class="submitbutton" + value="Delete Principal" + onclick="return confirmDelete();" + /> + + <h1>View Service Principal</h1> + + <h2 class="formsection">Principal</h2> + <table class="formtable" cellpadding="2" cellspacing="0" border="0"> + <tr> + <th> + <label class="fieldlabel">Host</label>: + </th> + <td>${principal.get("hostname")}</td> + </tr> + <tr> + <th> + <label class="fieldlabel">Service</label>: + </th> + <td>${principal.get("service")}</td> + </tr> + </table> + </form> + +<hr /> + +</body> +</html> |