summaryrefslogtreecommitdiffstats
path: root/ipa-server/ipa-gui/ipagui
diff options
context:
space:
mode:
authorRob Crittenden <rcritten@redhat.com>2008-01-11 11:44:23 -0500
committerRob Crittenden <rcritten@redhat.com>2008-01-11 11:44:23 -0500
commit42d5ddc559bf22792b170bdacaf19996350783e1 (patch)
tree3f220cc4609cf394c4de994b92fc1ec318c6d758 /ipa-server/ipa-gui/ipagui
parent58071a759a22f5029916c170bff33f345a41e5ce (diff)
downloadfreeipa-42d5ddc559bf22792b170bdacaf19996350783e1.tar.gz
freeipa-42d5ddc559bf22792b170bdacaf19996350783e1.tar.xz
freeipa-42d5ddc559bf22792b170bdacaf19996350783e1.zip
Service principal deletion
Diffstat (limited to 'ipa-server/ipa-gui/ipagui')
-rw-r--r--ipa-server/ipa-gui/ipagui/subcontrollers/principal.py45
-rw-r--r--ipa-server/ipa-gui/ipagui/templates/principallist.kid6
-rw-r--r--ipa-server/ipa-gui/ipagui/templates/principalshow.kid53
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>