blob: 9c0f14f87777252d83870247b83335a9a629e74c [file] [log] [blame]
#// Copyright (c) 2000-2017 Ericsson Telecom AB //
#// All rights reserved. This program and the accompanying materials are made available under the terms //
#// of the Eclipse Public License v2.0 which accompanies this distribution, and is available at //
#// https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html //
#/////////////////////////////////////////////////////////////////////////////////////////////////////////
import json, os
class FileUserHandler:
'''
This class stores usergroup information in a json file and provides an interface for editing the usergroups.
'''
def __init__(self, directory):
self._directory = directory
with open(os.path.join(self._directory, 'userGroups.json'), 'r') as f:
self._userGroups = json.load(f)
def _saveUserGroups(self):
with open(os.path.join(self._directory, 'userGroups.json'), 'w') as f:
json.dump(self._userGroups, f, indent = 4)
def getUserGroups(self, username):
return set(self._userGroups['users'].get(username, []))
def addGroup(self, group, save = True):
if group not in self._userGroups['groups']:
self._userGroups['groups'].append(group)
if save:
self._saveUserGroups()
def removeGroup(self, group, save = True):
if group in self._userGroups['groups']:
self._userGroups['groups'].remove(group)
for user in self._userGroups['users'].keys():
self.removeUserFromGroup(user, group, False)
if save:
self._saveUserGroups()
def addUserToGroup(self, username, group, save = True):
if group in self._userGroups['groups']:
if username not in self._userGroups['users']:
self._userGroups['users'][username] = []
if group not in self._userGroups['users'][username]:
self._userGroups['users'][username].append(group)
if save:
self._saveUserGroups()
def removeUserFromGroup(self, username, group, save = True):
if username in self._userGroups['users'] and group in self._userGroups['users'][username]:
self._userGroups['users'][username].remove(group)
if len(self._userGroups['users'][username]) == 0:
self._userGroups['users'].pop(username, [])
if save:
self._saveUserGroups()
def listGroups(self):
return self._userGroups['groups']
def listUsersInGroup(self, group):
users = set()
for user in self._userGroups['users']:
if group in self._userGroups['users'][user]:
users.add(user)
return users