function exec($args, $stdin, &$stdout, &$stderr, &$system)
	{
		if (!isAdmin())
		{
			$stderr = ucf(i18n("not enough rights to add user to group"));
			return true;
		}
		
		if (empty($args))
		{
			$stdout = "Usage: gadduser [group] [username]\n";
			$stdout .= "Example: gadduser admins admin";
		}
		else
		{
			list($groupname, $username) = explode(" ", $args);
			$user = new mUser();
			$user->setByUsername($username);
			
			if ($user->id <= 0)
			{
				$stderr = ucf(i18n("no user named"))." $username ".i18n("found");
				return true;
			}
			
			$group = new mGroup();
			$group->setByName($groupname);
			
			if ($group->id <= 0)
			{
				$stderr = ucf(i18n("no group named"))." $groupname ".i18n("found");
				return true;
			}
			
			$user_groups = $user->getGroups();
			
			if (in_array($groupname, $user_groups))
			{
				$stderr = $username." ".i18n("is already a member of")." $groupname";
				return true;
			}
			
			$user->groups .= " $groupname";
			$user->save();
			
			$stdout = ucf(i18n("added"))." $username ".i18n("to")." $groupname";
		}
		
		return true;
	}
Beispiel #2
0
function createUser($name, $username, $password, $email, $groups, $create_home = true)
{
	if (!isAdmin)
		return ucf(i18n("not enough rights to create new user"));

	if (empty($name))
		return ucf(i18n("a name must be specified"));
		
	if (empty($username))
		return ucf(i18n("a username must be specified"));

	$user = new mUser();
	$user->setByUsername($username);

	if ($user->id > 0)
		return ucf(i18n("a user with that username already exists"));
		
	$group = new mGroup();
	$group->setByName($username);
	if ($group->id > 0)
		$group_id = $group->id;
	else
		$group_id = createGroup($username, "This is the group of $name", false);
		
	$group = new mGroup($group_id);
	$groups = $group->name." $groups";
	$groups = trim($groups);

	$user->name = $name;
	$user->username = $username;
	$user->password = md5($password);
	$user->groups = $groups;
	$user->email = $email;
	$ret = $user->save();
	
	if ($create_home && getNode("/root/home/users/".$username) <= 0)
	{
		$home = new mObject();
		$home->setClassName("folder");
		$home->loadVars();
	
		$home->name = $username;
		$home->language = $_SESSION['murrix']['language'];
		$home->rights = "$username=rc";
	
		$home->setVarValue("description", "This is the home of $name");
	
		if ($home->save())
		{
			$home->setMeta("initial_rights", "$username=rwc");
			$home_folder = new mObject(getNode("/root/home/users"));
			$home->linkWithNode($home_folder->getNodeId());
		}
		else
		{
			$message = "Operation unsuccessfull.<br/>";
			$message .= "Error output:<br/>";
			$message .= $home->getLastError();
			return $message;
		}
		
		$user->home_id = $home->getNodeId();
		$user->save();
	}

	return $ret;
}