13 require_once(
"$MODDIR/lib/php/common-cli.php");
15 require_once(
"$MODDIR/lib/php/common-users.php");
17 error_reporting(E_ALL);
19 $usage =
"Usage: " . basename($argv[0]) .
" [options]
20 --username = admin/user with user-creation permissions
21 --password = admin/user password
22 --uname = username to create if not exists
23 --gname = groupname to create if not exists
24 --upasswd = password of created user
25 --permlvl = group permission level (-1: None, ".UserDao::USER.
": User, ".UserDao::ADMIN.
": Admin, ".UserDao::ADVISOR.
": Advisor)
27 --folder = root folder
29 $opts = getopt(
"h", array(
'username:',
'password:',
'uname:',
'gname:',
'upasswd:',
'permlvl:',
'accesslvl:',
'folder:'));
31 if (array_key_exists(
'h',$opts)) {
36 $adminName = array_key_exists(
"username", $opts) ? $opts[
"username"] :
null;
37 $passwd = array_key_exists(
"password", $opts) ? $opts[
"password"] :
null;
39 print
"Fossology login failure\n";
42 print
"Logged in as user $adminName\n";
46 $userDao = $GLOBALS[
'container']->get(
"dao.user");
48 $folderDao = $GLOBALS[
'container']->get(
"dao.folder");
50 $adminRow = $userDao->getUserByName($adminName);
52 print
"You have no permission to admin the user group thingy\n";
56 $uName = array_key_exists(
"uname", $opts) ? $opts[
"uname"] :
'';
57 $user = $uName ? $userDao->getUserByName($uName) :
false;
58 if ($user !==
false) {
59 print
"The user already exists, and updates in permissions not done from the commandline, we will only add group rights\n";
62 if ($uName && !$user) {
63 $pass = array_key_exists(
'upasswd', $opts) ? $opts[
'upasswd'] :
'';
64 $options = array(
'cost' => 10);
65 $hash = password_hash($pass, PASSWORD_DEFAULT, $options);
66 $desc =
'created via cli';
67 $perm = array_key_exists(
'accesslvl', $opts) ? intval($opts[
'accesslvl']) : 0;
68 if (array_key_exists(
'folder', $opts)) {
69 $folder = $opts[
'folder'];
70 $folderid = $folderDao->getFolderId($folder);
72 if ($folderid ==
null) {
73 $folderid = $folderDao->insertFolder($folder,
'Cli generated folder');
80 $email = $emailNotify =
'';
81 add_user($uName, $desc, $hash, $perm, $email, $emailNotify, $agentList, $folderid);
82 $user = $userDao->getUserByName($uName);
83 print
"added user $uName\n";
86 $gName = array_key_exists(
"gname", $opts) ? $opts[
"gname"] :
'';
88 $sql =
"SELECT group_pk FROM groups WHERE group_name=$1";
89 $groupRow = $dbManager->getSingleRow($sql, array($gName), __FILE__ . __LINE__);
90 $groupId = $groupRow ? $groupRow[
'group_pk'] : $userDao->addGroup($gName);
95 $permLvl = array_key_exists(
"permlvl", $opts) ? intval($opts[
"permlvl"]) : 0;
96 if ($user && $groupId) {
97 $sql =
"SELECT group_user_member_pk id FROM group_user_member WHERE user_fk=$1 AND group_fk=$2";
98 $gumRow = $dbManager->getSingleRow($sql,array($user[
'user_pk'],$groupId),__FILE__.__LINE__);
101 if ($user && $groupId && $permLvl<0 && $gumRow) {
102 $dbManager->prepare($stmt = __FILE__.__LINE__,
103 "delete from group_user_member where group_user_member_pk=$1");
104 $dbManager->freeResult($dbManager->execute($stmt, array($gumRow[
'id'])));
105 print
"deleted membership of $uName in $gName\n";
106 }
else if ($user && $groupId && $permLvl>=0 && $gumRow) {
107 $dbManager->getSingleRow(
"update group_user_member set group_perm=$1 where group_user_member_pk=$2",
108 array($permLvl, $gumRow[
'id']), __FILE__.__LINE__);
109 print
"update membership of $uName in $gName\n";
110 }
else if ($user && $groupId && $permLvl>=0) {
111 $dbManager->insertTableRow(
'group_user_member',
112 array(
'group_perm'=>$permLvl,
'user_fk'=>$user[
'user_pk'],
'group_fk'=>$groupId));
113 print
"inserted membership of $uName in $gName\n";
Contains the constants and helpers for authentication of user.
userAgents($agents=null)
Read the UI form and format the user selected agents into a comma separated list.
account_check(&$user, &$passwd, &$group="")
check if this account is correct
cli_Init()
Initialize the fossology environment for CLI use. This routine loads the plugins so they can be use b...
add_user($User, $Desc, $Hash, $Perm, $Email, $Email_notify, $Upload_visibility, $agentList, $Folder, $default_bucketpool_fk='')
Add a user.
#define PERM_WRITE
Read-Write permission.
#define PERM_READ
Read-only permission.
#define PERM_ADMIN
Administrator.
#define PERM_NONE
User has no permission (not logged in)
#define PLUGIN_DB_ADMIN
Plugin requires admin level permission on DB.