Ability to delete an object
This commit is contained in:
parent
54eb5d6239
commit
08a7ec3292
2 changed files with 48 additions and 20 deletions
50
admin.go
50
admin.go
|
@ -128,6 +128,7 @@ type AdminLDAPTplData struct {
|
||||||
Children []Child
|
Children []Child
|
||||||
CanAddChild bool
|
CanAddChild bool
|
||||||
Props map[string]*PropValues
|
Props map[string]*PropValues
|
||||||
|
CanDelete bool
|
||||||
|
|
||||||
HasMembers bool
|
HasMembers bool
|
||||||
Members []EntryName
|
Members []EntryName
|
||||||
|
@ -174,6 +175,27 @@ func handleAdminLDAP(w http.ResponseWriter, r *http.Request) {
|
||||||
dError := ""
|
dError := ""
|
||||||
dSuccess := false
|
dSuccess := false
|
||||||
|
|
||||||
|
// Build path
|
||||||
|
path := []PathItem{
|
||||||
|
PathItem{
|
||||||
|
DN: config.BaseDN,
|
||||||
|
Identifier: config.BaseDN,
|
||||||
|
Active: dn == config.BaseDN,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
len_base_dn := len(strings.Split(config.BaseDN, ","))
|
||||||
|
dn_split := strings.Split(dn, ",")
|
||||||
|
dn_last_attr := strings.Split(dn_split[0], "=")[0]
|
||||||
|
for i := len_base_dn + 1; i <= len(dn_split); i++ {
|
||||||
|
path = append(path, PathItem{
|
||||||
|
DN: strings.Join(dn_split[len(dn_split)-i:len(dn_split)], ","),
|
||||||
|
Identifier: dn_split[len(dn_split)-i],
|
||||||
|
Active: i == len(dn_split),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle modification operation
|
||||||
if r.Method == "POST" {
|
if r.Method == "POST" {
|
||||||
r.ParseForm()
|
r.ParseForm()
|
||||||
action := strings.Join(r.Form["action"], "")
|
action := strings.Join(r.Form["action"], "")
|
||||||
|
@ -266,27 +288,16 @@ func handleAdminLDAP(w http.ResponseWriter, r *http.Request) {
|
||||||
} else {
|
} else {
|
||||||
dSuccess = true
|
dSuccess = true
|
||||||
}
|
}
|
||||||
|
} else if action == "delete-object" {
|
||||||
|
del_request := ldap.NewDelRequest(dn, nil)
|
||||||
|
err := login.conn.Del(del_request)
|
||||||
|
if err != nil {
|
||||||
|
dError = err.Error()
|
||||||
|
} else {
|
||||||
|
http.Redirect(w, r, "/admin/ldap/" + strings.Join(dn_split[1:], ","), http.StatusFound)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Build path
|
|
||||||
path := []PathItem{
|
|
||||||
PathItem{
|
|
||||||
DN: config.BaseDN,
|
|
||||||
Identifier: config.BaseDN,
|
|
||||||
Active: dn == config.BaseDN,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
len_base_dn := len(strings.Split(config.BaseDN, ","))
|
|
||||||
dn_split := strings.Split(dn, ",")
|
|
||||||
dn_last_attr := strings.Split(dn_split[0], "=")[0]
|
|
||||||
for i := len_base_dn + 1; i <= len(dn_split); i++ {
|
|
||||||
path = append(path, PathItem{
|
|
||||||
DN: strings.Join(dn_split[len(dn_split)-i:len(dn_split)], ","),
|
|
||||||
Identifier: dn_split[len(dn_split)-i],
|
|
||||||
Active: i == len(dn_split),
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get object and parse it
|
// Get object and parse it
|
||||||
|
@ -445,6 +456,7 @@ func handleAdminLDAP(w http.ResponseWriter, r *http.Request) {
|
||||||
Children: children,
|
Children: children,
|
||||||
Props: props,
|
Props: props,
|
||||||
CanAddChild: dn_last_attr == "ou",
|
CanAddChild: dn_last_attr == "ou",
|
||||||
|
CanDelete: dn != config.BaseDN && len(children) == 0,
|
||||||
|
|
||||||
HasMembers: len(members) > 0 || hasMembers,
|
HasMembers: len(members) > 0 || hasMembers,
|
||||||
Members: members,
|
Members: members,
|
||||||
|
|
|
@ -190,6 +190,22 @@
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
||||||
|
{{if .CanDelete}}
|
||||||
|
<hr class="mt-4">
|
||||||
|
<h5 class="mt-4">Supprimer l'objet</h5>
|
||||||
|
<div class="alert alert-danger">
|
||||||
|
Attention, cette opération est irrévocable !
|
||||||
|
</div>
|
||||||
|
<form method="POST" onsubmit="return confirm('Supprimer cet objet DÉFINITIVEMENT ?');">
|
||||||
|
<div class="form-row">
|
||||||
|
<input type="hidden" name="action" value="delete-object" />
|
||||||
|
<div class="col-sm-5"></div>
|
||||||
|
<input type="submit" value="Supprimer l'objet" class="form-control btn btn-danger col-sm-2" />
|
||||||
|
<div class="col-sm-5"></div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
{{end}}
|
||||||
|
|
||||||
<hr class="mt-4" />
|
<hr class="mt-4" />
|
||||||
|
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
Loading…
Reference in a new issue