mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-09-19 04:59:01 +00:00
Add actions for LDAP group management.
This commit is contained in:
parent
2adf14b8b7
commit
197c95a7bf
43
actions/add-ldap-user-to-group
Executable file
43
actions/add-ldap-user-to-group
Executable file
@ -0,0 +1,43 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# This file is part of Plinth.
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
# published by the Free Software Foundation, either version 3 of the
|
||||||
|
# License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU Affero General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
# Must be run as root.
|
||||||
|
|
||||||
|
username="$1"
|
||||||
|
groupname="$2"
|
||||||
|
|
||||||
|
# check if group already exists
|
||||||
|
results=$(ldapsearch -Y EXTERNAL -H ldapi:/// -b 'ou=groups,dc=thisbox' -LLL "(cn=$groupname)" cn)
|
||||||
|
|
||||||
|
if [ -z "$results" ]; then
|
||||||
|
# create group, with user as initial member
|
||||||
|
cat <<EOF |ldapadd -Y EXTERNAL -H ldapi:///
|
||||||
|
dn: cn=$groupname,ou=groups,dc=thisbox
|
||||||
|
objectClass: groupOfUniqueNames
|
||||||
|
cn: $groupname
|
||||||
|
uniqueMember: uid=$username,ou=users,dc=thisbox
|
||||||
|
EOF
|
||||||
|
else
|
||||||
|
# add user to existing group
|
||||||
|
cat <<EOF |ldapmodify -Y EXTERNAL -H ldapi:///
|
||||||
|
dn: cn=$groupname,ou=groups,dc=thisbox
|
||||||
|
changetype: modify
|
||||||
|
add: uniqueMember
|
||||||
|
uniqueMember: uid=$username,ou=users,dc=thisbox
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
@ -58,24 +58,3 @@ if [ $? -ne 0 ]; then
|
|||||||
echo "Failed to create posix account for user"
|
echo "Failed to create posix account for user"
|
||||||
exit 2
|
exit 2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# check if admin group exists
|
|
||||||
results=$(ldapsearch -Y EXTERNAL -H ldapi:/// -b 'ou=groups,dc=thisbox' -LLL "(cn=admin)" cn)
|
|
||||||
|
|
||||||
if [ -z "$results" ]; then
|
|
||||||
# create admin group, with new user as a member
|
|
||||||
cat <<EOF |ldapadd -Y EXTERNAL -H ldapi:///
|
|
||||||
dn: cn=admin,ou=groups,dc=thisbox
|
|
||||||
objectClass: groupOfUniqueNames
|
|
||||||
cn: admin
|
|
||||||
uniqueMember: uid=$username,ou=users,dc=thisbox
|
|
||||||
EOF
|
|
||||||
else
|
|
||||||
# add new user to existing admin group
|
|
||||||
cat <<EOF |ldapmodify -Y EXTERNAL -H ldapi:///
|
|
||||||
dn: cn=admin,ou=groups,dc=thisbox
|
|
||||||
changetype: modify
|
|
||||||
add: uniqueMember
|
|
||||||
uniqueMember: uid=$username,ou=users,dc=thisbox
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
|
|||||||
46
actions/remove-ldap-user-from-group
Executable file
46
actions/remove-ldap-user-from-group
Executable file
@ -0,0 +1,46 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# This file is part of Plinth.
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
# published by the Free Software Foundation, either version 3 of the
|
||||||
|
# License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU Affero General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
# Must be run as root.
|
||||||
|
|
||||||
|
username="$1"
|
||||||
|
groupname="$2"
|
||||||
|
|
||||||
|
cat <<EOF |ldapmodify -Y EXTERNAL -H ldapi:///
|
||||||
|
dn: cn=$groupname,ou=groups,dc=thisbox
|
||||||
|
changetype: modify
|
||||||
|
delete: uniqueMember
|
||||||
|
uniqueMember: uid=$username,ou=users,dc=thisbox
|
||||||
|
EOF
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "Removed user from group"
|
||||||
|
elif [ $? -eq 16 ]; then
|
||||||
|
echo "User was not in group"
|
||||||
|
exit 1
|
||||||
|
elif [ $? -eq 65 ]; then
|
||||||
|
# Cannot have empty group, so just delete the group.
|
||||||
|
ldapdelete -Y EXTERNAL -H ldapi:/// "cn=$groupname,ou=groups,dc=thisbox"
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "User was last member in group, so group was deleted."
|
||||||
|
else
|
||||||
|
echo "User was last member in group, but could not delete group."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
@ -72,6 +72,14 @@ than 63 characters in length.'),
|
|||||||
messages.error(self.request,
|
messages.error(self.request,
|
||||||
_('Creating LDAP user failed.'))
|
_('Creating LDAP user failed.'))
|
||||||
|
|
||||||
|
try:
|
||||||
|
actions.superuser_run(
|
||||||
|
'add-ldap-user-to-group',
|
||||||
|
[user.get_username(), 'admin'])
|
||||||
|
except ActionError:
|
||||||
|
messages.error(self.request,
|
||||||
|
_('Failed to add new user to admin group.'))
|
||||||
|
|
||||||
self.login_user()
|
self.login_user()
|
||||||
|
|
||||||
return user
|
return user
|
||||||
|
|||||||
@ -56,6 +56,13 @@ class CreateUserForm(UserCreationForm):
|
|||||||
messages.error(self.request,
|
messages.error(self.request,
|
||||||
_('Creating LDAP user failed.'))
|
_('Creating LDAP user failed.'))
|
||||||
|
|
||||||
|
try:
|
||||||
|
actions.superuser_run(
|
||||||
|
'add-ldap-user-to-group',
|
||||||
|
[user.get_username(), 'admin'])
|
||||||
|
except ActionError:
|
||||||
|
messages.error(self.request,
|
||||||
|
_('Failed to add new user to admin group.'))
|
||||||
return user
|
return user
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user