Generic framework for user group per application

- Closes #928
- Adds shell and python APIs adding/removing LDAP groups

Signed-off-by: Rahul De <rahul080327@gmail.com>
Reviewed-by: Joseph Nuthalapati <njoseph@thoughtworks.com>
This commit is contained in:
Rahul De 2017-09-26 12:09:52 +05:30 committed by Joseph Nuthalpati
parent 7b75e97e96
commit a22a01a76f
3 changed files with 32 additions and 2 deletions

View File

@ -92,13 +92,29 @@ get_user_groups()
}
add_group()
{
groupname="$1"
ldapsearch -Q -L -L -L -Y EXTERNAL -H ldapi:/// -s base -b "cn=${groupname},dc=thisbox" || ldapaddgroup "${groupname}" > /dev/null 2>&1
}
remove_group()
{
groupname="$1"
ldapsearch -Q -L -L -L -Y EXTERNAL -H ldapi:/// -s base -b "cn=${groupname},dc=thisbox" && ldapdeletegroup "${groupname}" > /dev/null 2>&1
}
add_user_to_group()
{
username="$1"
groupname="$2"
# Try to create group and ignore failure if group already exists
ldapaddgroup $groupname > /dev/null 2>&1 || true
add_group "${groupname}"
ldapaddusertogroup $username $groupname > /dev/null
@ -149,6 +165,12 @@ case $command in
remove-user-from-group)
remove_user_from_group "$@"
;;
add-group)
add_group "$@"
;;
remove-group)
remove_group "$@"
;;
*)
echo "Invalid sub-command"
exit -1

View File

@ -18,8 +18,8 @@
Python action utility functions.
"""
import os
import logging
import os
import shutil
import socket
import subprocess

View File

@ -84,3 +84,11 @@ def _diagnose_ldap_entry(search_item):
return [_('Check LDAP entry "{search_item}"')
.format(search_item=search_item), result]
def add_group(group):
actions.superuser_run("ldap", options=["add-group", group])
def remove_group(group):
actions.superuser_run("ldap", options=["remove-group", group])