'; \Noalyss\Dbg::echo_file(__FILE__); /******************************************************/ // Add user /******************************************************/ if ( isset ($_POST["ADD"]) ) { $cn=new Database(); $a_result =check_password_strength($_POST['PASS']); $pass5=md5($_POST['PASS']); $new_user=new Noalyss_user($cn,0); $new_user->first_name=$http->post('FNAME'); $new_user->last_name=$http->post('LNAME'); $new_user->setAdmin(0); $login=$http->post('LOGIN'); $login=str_replace("'","",$login); $login=str_replace('"',"",$login); $login=str_replace(" ","",$login); $login=strtolower($login); $new_user->login=$login; //$new_user->auth_method= $new_user->email=$http->post('EMAIL',"string",''); if ( trim($login)=="" || strlen($login)<5) { alert(_("Le login ne peut pas être vide et avoir au moins 5 lettres")); }elseif (count($a_result['msg']) > 0){ // password too weak $msg=''._("Mot de passe inchangé").''; foreach ($a_result['msg'] as $result ) { $msg.="$result
"; } alert($msg); } else { $exist_user=$cn->get_value("select count(*) from ac_users where use_login=lower($1)",[$login]); if ( $exist_user == 0 ) { $new_user->setPassword($pass5); $new_user->insert(); $new_user->load(); put_global(array(['key'=>'use_id',"value"=>$new_user->id])); Noalyss_user::audit_admin(sprintf('ADD USER %s %s',$new_user->id,$login)); } else { echo_warning(_("Utilisateur existant")); $uid=$cn->get_value("select use_id from ac_users where use_login=lower($1)",[$login]); $new_user->setId($uid); put_global(array(['key'=>'use_id',"value"=>$new_user->id])); $new_user->load(); } require_once NOALYSS_INCLUDE.'/user_detail.inc.php'; return; } } //SET login /******************************************************/ // Update user /******************************************************/ $sbaction=$http->post('sbaction',"string", ""); if ($sbaction == "save") { $uid = $http->post("UID"); // Update User $cn = new Database(); $UserChange = new Noalyss_user($cn, $uid); if ($UserChange->load() == -1) { alert(_("Cet utilisateur n'existe pas")); } else { $UserChange->first_name =$http->post('fname'); $UserChange->last_name = $http->post('lname'); $UserChange->active = $http->post('Actif'); $UserChange->admin = $http->post('Admin'); $UserChange->email = $http->post('email'); $UserChange->authent_method = $http->post('auth_method',"number"); if ($UserChange->active ==-1 || $UserChange->admin ==-1) { die ('Missing data'); } if ( trim($_POST['password'])<>'') { $a_result =check_password_strength($_POST['password']); if (count($a_result['msg']) > 0){ // password too weak $msg=''._("Mot de passe inchangé").''; foreach ($a_result['msg'] as $result ) { $msg.="$result
"; } alert($msg); require_once NOALYSS_INCLUDE.'/user_detail.inc.php'; return; } else { $UserChange->setPassword(md5($_POST['password'])); } } // if request new secret for OTP if ( $http->post("generate_otp","number",0)==1){ $UserChange->generate_otp(); } // save user change $UserChange->save(); if ( $UserChange->authent_method !=0 && filter_var($UserChange->email, FILTER_VALIDATE_EMAIL) === false ) { echo_warning(_("Email invalide")); require_once NOALYSS_INCLUDE.'/user_detail.inc.php'; return; } // send a email with link if authen_method !=0 (freeOTP) if ( $UserChange->authent_method !=0 && filter_var($UserChange->email, FILTER_VALIDATE_EMAIL) == true && $http->post('email_otp','number',0) == 1 ) { // delete previous send for this user $cn->exec_sql('delete from otp_send_secret where use_id=$1',[$UserChange->getId()]); // send a email with a link to the qcode $UserChange->send_link_otp(); } } } else if ($sbaction == "delete") { /******************************************************/ // Delete the user /******************************************************/ // check that the control is correct try { $code=$http->post("userdel"); $ctl_code=$http->post('ctlcode'); $uid = $http->request('use_id'); } catch (Exception $ex) { echo_error($ex->getMessage()); throw $ex; } if ( DEBUGNOALYSS > 1) { echo "code [$code] code control [$ctl_code]"; } if ( $code != $ctl_code) { echo_warning (_("Code invalide, effacement refusé")); require_once NOALYSS_INCLUDE.'/user_detail.inc.php'; return; } if ($uid == 1) { echo_warning(_("Administrateur ne peut pas être effacé")); require_once NOALYSS_INCLUDE.'/user_detail.inc.php'; return; } $cn = new Database(); $auser=$cn->get_row('select use_login from ac_users where use_id = $1',[$uid]); if ( $auser == null) return; $Res = $cn->exec_sql("delete from jnt_use_dos where use_id=$1", array($uid)); $Res = $cn->exec_sql("delete from ac_users where use_id=$1", array($uid)); //------------------------------------ // Remove user from all the dossiers //------------------------------------ $a_dossier=$cn->get_array('select dos_id from ac_dossier'); if ( is_array($a_dossier) ) { $nb=count($a_dossier); for ( $i=0;$i<$nb;$i++) Noalyss_user::remove_inexistant_user($a_dossier[$i]['dos_id']); } Noalyss_user::audit_admin(sprintf('DELETE USER %s %s',$uid,$auser['use_login'])); echo "

"; printf (_("Utilisateur %s %s est effacé"),$http->post('fname'),$http->post('lname')) ; echo "

"; } // View user detail if ( isset($_REQUEST['det']) && $sbaction=="") { require_once NOALYSS_INCLUDE.'/user_detail.inc.php'; return; } ?>
'; echo HtmlInput::button_action(_("Ajout utilisateur"), "$('create_user').show();","cu"); echo '

'; // Show all the existing user on 7 columns $repo=new Dossier(0); /******************************************************/ // Detail of a user /******************************************************/ $compteur=0; $header=new Sort_Table(); $url=basename($_SERVER['PHP_SELF'])."?action=".$_REQUEST['action']; $header->add(_("Login"), $url," order by use_login asc", "order by use_login desc","la", "ld"); // 0 $header->add(_("Nom"), $url," order by use_name asc,use_first_name asc", "order by use_name desc,use_first_name desc","na", "nd"); // 1 $header->add(_("Authentification"), $url," order by use_auth_method asc,use_login asc", "order by use_auth_method desc ,use_login asc","auth", "nauth"); // 2 $header->add(_('Dossier'),$url,' order by ag_dossier asc','order by ag_dossier desc', //3 'da','dd'); $header->add(_("Actif"), $url," order by use_active asc", "order by use_active desc","aa", "ad"); // 4 $header->add(_("Email"), $url," order by use_email asc,use_name asc,use_first_name asc", "order by use_email desc,use_name desc,use_first_name desc","na", "nd"); //5 $ord=$http->request("ord","string","la"); $sql=$header->get_sql_order($ord); $a_user=$repo->get_user_folder($sql); if ( !empty ($a_user) ) { echo ''; echo _('Cherche').Icon_Action::infobulle(22); echo HtmlInput::filter_table("user", "0,1,2,3,5,6","1"); echo ''; echo ''; echo ''; echo ''; echo ''; echo th(_("Prénom")); echo ''; echo ''; echo ''; echo ""; echo ''; echo ''; $a_auth=[0=>_("Mot de passe"),1=>'Email et OTP',2=>'OTP']; foreach ( $a_user as $r_user) { $compteur++; $class=($compteur%2==0)?"odd":"even"; echo ""; if ( $r_user['use_active'] == 0 ) { $Active=$g_failed; } else { $Active=$g_succeed; } $det_url=$url."&det&use_id=".$r_user['use_id']; echo ""; echo td($r_user['use_name']); echo td($r_user['use_first_name']); echo td($r_user['use_email']); echo td($a_auth[$r_user['use_auth_method']]); echo td($Active); $type=($r_user['use_admin']==1)?_("Administrateur"):_("Utilisateur"); echo ""; if ( $r_user['use_admin'] == 0) echo td($r_user['ag_dossier']); else { echo td(_('Tous')); } echo ''; }// foreach echo '
'.$header->get_header(0).''.$header->get_header(1).''.$header->get_header(5).''.$header->get_header(2).''.$header->get_header(4).'"._('Type')."'.$header->get_header(3).'
"; echo HtmlInput::anchor($r_user['use_login'],$det_url); echo "".$type."
'; } // $cn != null ?>