mirror of https://github.com/acanas/swad-core.git
Version 15.226.3
This commit is contained in:
parent
50fe72d03e
commit
c38e98b461
|
@ -54,12 +54,6 @@
|
|||
/****************************** Internal types *******************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
typedef enum
|
||||
{
|
||||
Acc_REQUEST_REMOVE_USR,
|
||||
Acc_REMOVE_USR,
|
||||
} Acc_ReqOrRemUsr_t;
|
||||
|
||||
/*****************************************************************************/
|
||||
/************** External global variables from others modules ****************/
|
||||
/*****************************************************************************/
|
||||
|
@ -86,7 +80,6 @@ static void Acc_PutLinkToRemoveMyAccountParams (void);
|
|||
|
||||
static void Acc_PrintAccountSeparator (void);
|
||||
|
||||
static void Acc_ReqRemAccountOrRemAccount (Acc_ReqOrRemUsr_t RequestOrRemove);
|
||||
static void Acc_AskIfRemoveUsrAccount (bool ItsMe);
|
||||
static void Acc_AskIfRemoveOtherUsrAccount (void);
|
||||
|
||||
|
@ -242,7 +235,7 @@ void Acc_ShowFormChangeMyAccount (void)
|
|||
/***** Put links to change my password and to remove my account*****/
|
||||
fprintf (Gbl.F.Out,"<div class=\"CONTEXT_MENU\">");
|
||||
Pwd_PutLinkToChangeMyPassword ();
|
||||
if (Acc_CheckIfICanEliminateAccount (true)) // ItsMe = true
|
||||
if (Acc_CheckIfICanEliminateAccount (Gbl.Usrs.Me.UsrDat.UsrCod))
|
||||
Acc_PutLinkToRemoveMyAccount ();
|
||||
fprintf (Gbl.F.Out,"</div>");
|
||||
|
||||
|
@ -575,56 +568,44 @@ void Acc_AfterCreationNewAccount (void)
|
|||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/********* Request definite removing of a user from the platform *************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Acc_ReqRemUsrGbl (void)
|
||||
{
|
||||
Acc_ReqRemAccountOrRemAccount (Acc_REQUEST_REMOVE_USR);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************** Definite removing of a user from the platform ****************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Acc_RemUsrGbl (void)
|
||||
void Acc_GetUsrCodAndRemUsrGbl (void)
|
||||
{
|
||||
Acc_ReqRemAccountOrRemAccount (Acc_REMOVE_USR);
|
||||
extern const char *Txt_User_not_found_or_you_do_not_have_permission_;
|
||||
|
||||
if (Usr_GetParamOtherUsrCodEncryptedAndGetUsrData ())
|
||||
Acc_ReqRemAccountOrRemAccount (Acc_REMOVE_USR);
|
||||
else
|
||||
Lay_ShowAlert (Lay_WARNING,Txt_User_not_found_or_you_do_not_have_permission_);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/**************************** Removing of a user *****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Acc_ReqRemAccountOrRemAccount (Acc_ReqOrRemUsr_t RequestOrRemove)
|
||||
void Acc_ReqRemAccountOrRemAccount (Acc_ReqOrRemUsr_t RequestOrRemove)
|
||||
{
|
||||
extern const char *Txt_User_not_found_or_you_do_not_have_permission_;
|
||||
bool ItsMe;
|
||||
|
||||
/***** Get user to be removed *****/
|
||||
if (Usr_GetParamOtherUsrCodEncryptedAndGetUsrData ())
|
||||
{
|
||||
ItsMe = (Gbl.Usrs.Me.UsrDat.UsrCod == Gbl.Usrs.Other.UsrDat.UsrCod);
|
||||
if (Acc_CheckIfICanEliminateAccount (ItsMe))
|
||||
switch (RequestOrRemove)
|
||||
{
|
||||
case Acc_REQUEST_REMOVE_USR: // Ask if eliminate completely the user from the platform
|
||||
Acc_AskIfRemoveUsrAccount (ItsMe);
|
||||
break;
|
||||
case Acc_REMOVE_USR: // Eliminate completely the user from the platform
|
||||
if (Pwd_GetConfirmationOnDangerousAction ())
|
||||
{
|
||||
Acc_CompletelyEliminateAccount (&Gbl.Usrs.Other.UsrDat,Cns_VERBOSE);
|
||||
if (Acc_CheckIfICanEliminateAccount (Gbl.Usrs.Other.UsrDat.UsrCod))
|
||||
switch (RequestOrRemove)
|
||||
{
|
||||
case Acc_REQUEST_REMOVE_USR: // Ask if eliminate completely the user from the platform
|
||||
Acc_AskIfRemoveUsrAccount (Gbl.Usrs.Me.UsrDat.UsrCod == Gbl.Usrs.Other.UsrDat.UsrCod);
|
||||
break;
|
||||
case Acc_REMOVE_USR: // Eliminate completely the user from the platform
|
||||
if (Pwd_GetConfirmationOnDangerousAction ())
|
||||
{
|
||||
Acc_CompletelyEliminateAccount (&Gbl.Usrs.Other.UsrDat,Cns_VERBOSE);
|
||||
|
||||
/***** Move unused contents of messages to table of deleted contents of messages *****/
|
||||
Msg_MoveUnusedMsgsContentToDeleted ();
|
||||
}
|
||||
break;
|
||||
}
|
||||
else
|
||||
Lay_ShowAlert (Lay_WARNING,Txt_User_not_found_or_you_do_not_have_permission_);
|
||||
}
|
||||
/***** Move unused contents of messages to table of deleted contents of messages *****/
|
||||
Msg_MoveUnusedMsgsContentToDeleted ();
|
||||
}
|
||||
break;
|
||||
}
|
||||
else
|
||||
Lay_ShowAlert (Lay_WARNING,Txt_User_not_found_or_you_do_not_have_permission_);
|
||||
}
|
||||
|
@ -633,15 +614,18 @@ static void Acc_ReqRemAccountOrRemAccount (Acc_ReqOrRemUsr_t RequestOrRemove)
|
|||
/******** Check if I can eliminate completely another user's account *********/
|
||||
/*****************************************************************************/
|
||||
|
||||
bool Acc_CheckIfICanEliminateAccount (bool ItsMe)
|
||||
bool Acc_CheckIfICanEliminateAccount (long UsrCod)
|
||||
{
|
||||
bool ItsMe = (Gbl.Usrs.Me.Logged &&
|
||||
UsrCod == Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||
|
||||
// A user logged as superuser can eliminate any user except her/him
|
||||
// Other users only can eliminate themselves
|
||||
return (( ItsMe && // It's me
|
||||
(Gbl.Usrs.Me.AvailableRoles & (1 << Rol_SYS_ADM)) == 0) // I can not be superuser
|
||||
return (( ItsMe && // It's me
|
||||
(Gbl.Usrs.Me.AvailableRoles & (1 << Rol_SYS_ADM)) == 0) // I can not be system admin
|
||||
||
|
||||
(!ItsMe && // It's not me
|
||||
Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM)); // I am logged as superuser
|
||||
(!ItsMe && // It's not me
|
||||
Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM)); // I am logged as system admin
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -40,6 +40,12 @@
|
|||
/******************************** Public types *******************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
typedef enum
|
||||
{
|
||||
Acc_REQUEST_REMOVE_USR,
|
||||
Acc_REMOVE_USR,
|
||||
} Acc_ReqOrRemUsr_t;
|
||||
|
||||
/*****************************************************************************/
|
||||
/****************************** Public prototypes ****************************/
|
||||
/*****************************************************************************/
|
||||
|
@ -52,10 +58,10 @@ bool Acc_CreateNewAccountAndLogIn (void);
|
|||
void Acc_CreateNewUsr (struct UsrData *UsrDat);
|
||||
void Acc_AfterCreationNewAccount (void);
|
||||
|
||||
void Acc_ReqRemUsrGbl (void);
|
||||
void Acc_RemUsrGbl (void);
|
||||
void Acc_GetUsrCodAndRemUsrGbl (void);
|
||||
void Acc_ReqRemAccountOrRemAccount (Acc_ReqOrRemUsr_t RequestOrRemove);
|
||||
|
||||
bool Acc_CheckIfICanEliminateAccount (bool ItsMe);
|
||||
bool Acc_CheckIfICanEliminateAccount (long UsrCod);
|
||||
void Acc_AskIfRemoveMyAccount (void);
|
||||
void Acc_RemoveMyAccount (void);
|
||||
void Acc_CompletelyEliminateAccount (struct UsrData *UsrDat,
|
||||
|
|
|
@ -2446,7 +2446,7 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
|||
/* ActRemStdCrs */{1462,-1,TabUsr,ActLstStd ,0x1F8,0x1E0,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_RemUsrFromCrs ,NULL},
|
||||
/* ActRemTchCrs */{1463,-1,TabUsr,ActLstTch ,0x1F0,0x1E0,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_RemUsrFromCrs ,NULL},
|
||||
|
||||
/* ActRemUsrGbl */{ 62,-1,TabUsr,ActLstOth ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Acc_RemUsrGbl ,NULL},
|
||||
/* ActRemUsrGbl */{ 62,-1,TabUsr,ActLstOth ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Acc_GetUsrCodAndRemUsrGbl ,NULL},
|
||||
|
||||
/* ActReqRemAllStdCrs*/{ 88,-1,TabUsr,ActLstStd ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_AskRemAllStdsThisCrs ,NULL},
|
||||
/* ActRemAllStdCrs */{ 87,-1,TabUsr,ActLstStd ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_RemAllStdsThisCrs ,NULL},
|
||||
|
|
|
@ -129,13 +129,14 @@
|
|||
/****************************** Public constants *****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
#define Log_PLATFORM_VERSION "SWAD 15.226.2 (2016-06-17)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 15.226.3 (2016-06-17)"
|
||||
#define CSS_FILE "swad15.226.css"
|
||||
#define JS_FILE "swad15.226.js"
|
||||
|
||||
// Number of lines (includes comments but not blank lines) has been got with the following command:
|
||||
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h sql/swad*.sql | tail -1
|
||||
/*
|
||||
Version 15.226.3: Jun 17, 2016 Request the removal of a user account from list of similar users. (202912 lines)
|
||||
Version 15.226.2: Jun 17, 2016 New action to remove a user from list of possible duplicate users. (202921 lines)
|
||||
1 change necessary in database:
|
||||
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1580','es','N','Quitar de usuarios duplicados');
|
||||
|
|
|
@ -25,12 +25,10 @@
|
|||
/*********************************** Headers *********************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
// #include <linux/stddef.h> // For NULL
|
||||
// #include <stdlib.h> // For exit, system, malloc, free, rand, etc.
|
||||
// #include <string.h> // For string functions
|
||||
|
||||
#include "swad_account.h"
|
||||
#include "swad_database.h"
|
||||
#include "swad_duplicate.h"
|
||||
#include "swad_enrollment.h"
|
||||
#include "swad_global.h"
|
||||
#include "swad_layout.h"
|
||||
#include "swad_profile.h"
|
||||
|
@ -332,10 +330,14 @@ static void Dup_ListSimilarUsrsInternal (void)
|
|||
Gbl.RowEvenOdd);
|
||||
|
||||
/* Button to remove this user */
|
||||
Act_FormStart (ActLstSimUsr); // TODO: Change to action to request confirmation to remove
|
||||
Usr_PutParamUsrCodEncrypted (UsrDat.EncryptedUsrCod);
|
||||
Lay_PutRemoveButtonInline ("Eliminar usuario"); // TODO: Need translation!!!
|
||||
Act_FormEnd ();
|
||||
if (Acc_CheckIfICanEliminateAccount (UsrDat.UsrCod))
|
||||
{
|
||||
Act_FormStart (ActUpdOth);
|
||||
Usr_PutParamUsrCodEncrypted (UsrDat.EncryptedUsrCod);
|
||||
Par_PutHiddenParamUnsigned ("RegRemAction",(unsigned) Enr_ELIMINATE_ONE_USR_FROM_PLATFORM);
|
||||
Lay_PutRemoveButtonInline ("Eliminar usuario"); // TODO: Need translation!!!
|
||||
Act_FormEnd ();
|
||||
}
|
||||
|
||||
/* Button to remove from list of possible duplicate users */
|
||||
if (Dup_CheckIfUsrIsDup (UsrDat.UsrCod))
|
||||
|
|
|
@ -1114,7 +1114,7 @@ bool Enr_PutActionsRegRemOneUsr (bool ItsMe)
|
|||
}
|
||||
|
||||
/***** Eliminate user completely from platform *****/
|
||||
if (Acc_CheckIfICanEliminateAccount (ItsMe))
|
||||
if (Acc_CheckIfICanEliminateAccount (Gbl.Usrs.Other.UsrDat.UsrCod))
|
||||
{
|
||||
fprintf (Gbl.F.Out,"<li>"
|
||||
"<input type=\"radio\" name=\"RegRemAction\" value=\"%u\"",
|
||||
|
@ -3780,10 +3780,7 @@ void Enr_ModifyUsr (void)
|
|||
Error = true;
|
||||
break;
|
||||
case Enr_ELIMINATE_ONE_USR_FROM_PLATFORM:
|
||||
if (Acc_CheckIfICanEliminateAccount (ItsMe))
|
||||
Acc_ReqRemUsrGbl ();
|
||||
else
|
||||
Error = true;
|
||||
Acc_ReqRemAccountOrRemAccount (Acc_REQUEST_REMOVE_USR);
|
||||
break;
|
||||
default:
|
||||
Error = true;
|
||||
|
|
Loading…
Reference in New Issue