mirror of https://github.com/acanas/swad-core.git
Version 15.204
This commit is contained in:
parent
10805e0aea
commit
cfb6dfdeac
89
swad_ID.c
89
swad_ID.c
|
@ -54,6 +54,12 @@ extern struct Globals Gbl;
|
||||||
/******************************* Private types *******************************/
|
/******************************* Private types *******************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
ID_REQUEST_CONFIRM_ID,
|
||||||
|
ID_CONFIRM_ID,
|
||||||
|
} ID_ReqConfOrConfID_t;
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/***************************** Private variables *****************************/
|
/***************************** Private variables *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -74,6 +80,8 @@ static void ID_RemoveUsrIDFromDB (long UsrCod,const char *UsrID);
|
||||||
static void ID_NewUsrID (const struct UsrData *UsrDat,bool ItsMe);
|
static void ID_NewUsrID (const struct UsrData *UsrDat,bool ItsMe);
|
||||||
static void ID_InsertANewUsrIDInDB (long UsrCod,const char *NewID,bool Confirmed);
|
static void ID_InsertANewUsrIDInDB (long UsrCod,const char *NewID,bool Confirmed);
|
||||||
|
|
||||||
|
static void ID_ReqConfOrConfOtherUsrID (ID_ReqConfOrConfID_t ReqConfOrConfID);
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/********************** Get list of IDs of a user ****************************/
|
/********************** Get list of IDs of a user ****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -820,7 +828,7 @@ static void ID_NewUsrID (const struct UsrData *UsrDat,bool ItsMe)
|
||||||
char NewID[ID_MAX_LENGTH_USR_ID+1];
|
char NewID[ID_MAX_LENGTH_USR_ID+1];
|
||||||
unsigned NumID;
|
unsigned NumID;
|
||||||
bool AlreadyExists;
|
bool AlreadyExists;
|
||||||
bool Confirmed;
|
unsigned NumIDFound;
|
||||||
bool Error = false;
|
bool Error = false;
|
||||||
|
|
||||||
if (Pwd_CheckIfICanChangeOtherUsrPassword (UsrDat->UsrCod))
|
if (Pwd_CheckIfICanChangeOtherUsrPassword (UsrDat->UsrCod))
|
||||||
|
@ -837,14 +845,15 @@ static void ID_NewUsrID (const struct UsrData *UsrDat,bool ItsMe)
|
||||||
for (NumID = 0, AlreadyExists = false;
|
for (NumID = 0, AlreadyExists = false;
|
||||||
NumID < UsrDat->IDs.Num && !AlreadyExists;
|
NumID < UsrDat->IDs.Num && !AlreadyExists;
|
||||||
NumID++)
|
NumID++)
|
||||||
{
|
if (!strcasecmp (UsrDat->IDs.List[NumID].ID,NewID))
|
||||||
AlreadyExists = !strcasecmp (UsrDat->IDs.List[NumID].ID,NewID);
|
{
|
||||||
Confirmed = UsrDat->IDs.List[NumID].Confirmed;
|
AlreadyExists = true;
|
||||||
}
|
NumIDFound = NumID;
|
||||||
|
}
|
||||||
|
|
||||||
if (AlreadyExists) // This new ID was already associated to this user
|
if (AlreadyExists) // This new ID was already associated to this user
|
||||||
{
|
{
|
||||||
if (ItsMe || Confirmed)
|
if (ItsMe || UsrDat->IDs.List[NumIDFound].Confirmed)
|
||||||
{
|
{
|
||||||
Error = true;
|
Error = true;
|
||||||
sprintf (Gbl.Message,Txt_The_ID_X_matches_one_of_the_existing,
|
sprintf (Gbl.Message,Txt_The_ID_X_matches_one_of_the_existing,
|
||||||
|
@ -853,7 +862,7 @@ static void ID_NewUsrID (const struct UsrData *UsrDat,bool ItsMe)
|
||||||
else // It's not me && !Confirmed
|
else // It's not me && !Confirmed
|
||||||
{
|
{
|
||||||
/***** Mark this ID as confirmed *****/
|
/***** Mark this ID as confirmed *****/
|
||||||
ID_ConfirmUsrID (UsrDat->UsrCod,NewID);
|
ID_ConfirmUsrID (UsrDat,NewID);
|
||||||
sprintf (Gbl.Message,Txt_The_ID_X_has_been_confirmed,
|
sprintf (Gbl.Message,Txt_The_ID_X_has_been_confirmed,
|
||||||
NewID);
|
NewID);
|
||||||
}
|
}
|
||||||
|
@ -883,7 +892,7 @@ static void ID_NewUsrID (const struct UsrData *UsrDat,bool ItsMe)
|
||||||
|
|
||||||
/***** Show message *****/
|
/***** Show message *****/
|
||||||
Lay_ShowAlert (Error ? Lay_WARNING :
|
Lay_ShowAlert (Error ? Lay_WARNING :
|
||||||
Lay_INFO,
|
Lay_SUCCESS,
|
||||||
Gbl.Message);
|
Gbl.Message);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -913,9 +922,28 @@ static void ID_InsertANewUsrIDInDB (long UsrCod,const char *NewID,bool Confirmed
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void ID_RequestConfirmOtherUsrID (void)
|
void ID_RequestConfirmOtherUsrID (void)
|
||||||
|
{
|
||||||
|
ID_ReqConfOrConfOtherUsrID (ID_REQUEST_CONFIRM_ID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/************************ Confirm another user's ID **************************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
void ID_ConfirmOtherUsrID (void)
|
||||||
|
{
|
||||||
|
ID_ReqConfOrConfOtherUsrID (ID_CONFIRM_ID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/********** Request the confirmation or confirm another user's ID ************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static void ID_ReqConfOrConfOtherUsrID (ID_ReqConfOrConfID_t ReqConfOrConfID)
|
||||||
{
|
{
|
||||||
extern const char *Txt_ID_X_had_already_been_confirmed;
|
extern const char *Txt_ID_X_had_already_been_confirmed;
|
||||||
extern const char *Txt_Do_you_want_to_confirm_the_ID_X;
|
extern const char *Txt_Do_you_want_to_confirm_the_ID_X;
|
||||||
|
extern const char *Txt_The_ID_X_has_been_confirmed;
|
||||||
extern const char *Txt_User_not_found_or_you_do_not_have_permission_;
|
extern const char *Txt_User_not_found_or_you_do_not_have_permission_;
|
||||||
char UsrID[ID_MAX_LENGTH_USR_ID+1];
|
char UsrID[ID_MAX_LENGTH_USR_ID+1];
|
||||||
bool ICanConfirm = false;
|
bool ICanConfirm = false;
|
||||||
|
@ -940,7 +968,7 @@ void ID_RequestConfirmOtherUsrID (void)
|
||||||
for (NumID = 0, Found = false;
|
for (NumID = 0, Found = false;
|
||||||
NumID < Gbl.Usrs.Other.UsrDat.IDs.Num && !Found;
|
NumID < Gbl.Usrs.Other.UsrDat.IDs.Num && !Found;
|
||||||
NumID++)
|
NumID++)
|
||||||
if (!strcmp (UsrID,Gbl.Usrs.Other.UsrDat.IDs.List[NumID].ID))
|
if (!strcasecmp (UsrID,Gbl.Usrs.Other.UsrDat.IDs.List[NumID].ID))
|
||||||
{
|
{
|
||||||
Found = true;
|
Found = true;
|
||||||
NumIDFound = NumID;
|
NumIDFound = NumID;
|
||||||
|
@ -957,13 +985,29 @@ void ID_RequestConfirmOtherUsrID (void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/***** Ask for confirmation *****/
|
switch (ReqConfOrConfID)
|
||||||
sprintf (Gbl.Message,Txt_Do_you_want_to_confirm_the_ID_X,
|
{
|
||||||
Gbl.Usrs.Other.UsrDat.IDs.List[NumIDFound].ID);
|
case ID_REQUEST_CONFIRM_ID: // Ask if confirm ID
|
||||||
Lay_ShowAlert (Lay_INFO,Gbl.Message);
|
/***** Ask for confirmation *****/
|
||||||
|
sprintf (Gbl.Message,Txt_Do_you_want_to_confirm_the_ID_X,
|
||||||
|
Gbl.Usrs.Other.UsrDat.IDs.List[NumIDFound].ID);
|
||||||
|
Lay_ShowAlert (Lay_INFO,Gbl.Message);
|
||||||
|
|
||||||
/***** Put button to confirm ID *****/
|
/***** Put button to confirm ID *****/
|
||||||
ID_PutButtonToConfirmID (&Gbl.Usrs.Other.UsrDat,NumIDFound);
|
ID_PutButtonToConfirmID (&Gbl.Usrs.Other.UsrDat,NumIDFound);
|
||||||
|
break;
|
||||||
|
case ID_CONFIRM_ID: // Confirm ID
|
||||||
|
/***** Mark this ID as confirmed *****/
|
||||||
|
ID_ConfirmUsrID (&Gbl.Usrs.Other.UsrDat,
|
||||||
|
Gbl.Usrs.Other.UsrDat.IDs.List[NumIDFound].ID);
|
||||||
|
Gbl.Usrs.Other.UsrDat.IDs.List[NumIDFound].Confirmed = true;
|
||||||
|
|
||||||
|
/***** Write success message *****/
|
||||||
|
sprintf (Gbl.Message,Txt_The_ID_X_has_been_confirmed,
|
||||||
|
Gbl.Usrs.Other.UsrDat.IDs.List[NumIDFound].ID);
|
||||||
|
Lay_ShowAlert (Lay_SUCCESS,Gbl.Message);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // User's ID not found
|
else // User's ID not found
|
||||||
|
@ -976,26 +1020,17 @@ void ID_RequestConfirmOtherUsrID (void)
|
||||||
Lay_ShowAlert (Lay_WARNING,Txt_User_not_found_or_you_do_not_have_permission_);
|
Lay_ShowAlert (Lay_WARNING,Txt_User_not_found_or_you_do_not_have_permission_);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/************************ Confirm another user's ID **************************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
void ID_ConfirmOtherUsrID (void)
|
|
||||||
{
|
|
||||||
Lay_ShowAlert (Lay_SUCCESS,"Confirmado"); // TODO: Need translation!!!!
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*********************** Set a user's ID as confirmed ************************/
|
/*********************** Set a user's ID as confirmed ************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void ID_ConfirmUsrID (long UsrCod,const char *UsrID)
|
void ID_ConfirmUsrID (const struct UsrData *UsrDat,const char *UsrID)
|
||||||
{
|
{
|
||||||
char Query[256+ID_MAX_LENGTH_USR_ID];
|
char Query[256+ID_MAX_LENGTH_USR_ID];
|
||||||
|
|
||||||
/***** Update my nickname in database *****/
|
/***** Update database *****/
|
||||||
sprintf (Query,"UPDATE usr_IDs SET Confirmed='Y'"
|
sprintf (Query,"UPDATE usr_IDs SET Confirmed='Y'"
|
||||||
" WHERE UsrCod='%ld' AND UsrID='%s' AND Confirmed<>'Y'",
|
" WHERE UsrCod='%ld' AND UsrID='%s' AND Confirmed<>'Y'",
|
||||||
UsrCod,UsrID);
|
UsrDat->UsrCod,UsrID);
|
||||||
DB_QueryINSERT (Query,"can not confirm a user's ID");
|
DB_QueryINSERT (Query,"can not confirm a user's ID");
|
||||||
}
|
}
|
||||||
|
|
|
@ -76,6 +76,6 @@ void ID_NewOtherUsrID (void);
|
||||||
|
|
||||||
void ID_RequestConfirmOtherUsrID (void);
|
void ID_RequestConfirmOtherUsrID (void);
|
||||||
void ID_ConfirmOtherUsrID (void);
|
void ID_ConfirmOtherUsrID (void);
|
||||||
void ID_ConfirmUsrID (long UsrCod,const char *UsrID);
|
void ID_ConfirmUsrID (const struct UsrData *UsrDat,const char *UsrID);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -134,13 +134,14 @@
|
||||||
/****************************** Public constants *****************************/
|
/****************************** Public constants *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 15.203.6 (2016-04-24)"
|
#define Log_PLATFORM_VERSION "SWAD 15.204 (2016-04-25)"
|
||||||
#define CSS_FILE "swad15.203.css"
|
#define CSS_FILE "swad15.204.css"
|
||||||
#define JS_FILE "swad15.197.js"
|
#define JS_FILE "swad15.197.js"
|
||||||
|
|
||||||
// Number of lines (includes comments but not blank lines) has been got with the following command:
|
// 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
|
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h sql/swad*.sql | tail -1
|
||||||
/*
|
/*
|
||||||
|
Version 15.204: Apr 25, 2016 New form to confirm another user's ID. (201326 lines)
|
||||||
Version 15.203.6: Apr 24, 2016 New form to confirm another user's ID. Not finished. (201295 lines)
|
Version 15.203.6: Apr 24, 2016 New form to confirm another user's ID. Not finished. (201295 lines)
|
||||||
Version 15.203.5: Apr 24, 2016 New form to confirm another user's ID. Not finished. (201230 lines)
|
Version 15.203.5: Apr 24, 2016 New form to confirm another user's ID. Not finished. (201230 lines)
|
||||||
Version 15.203.4: Apr 23, 2016 New form to confirm another user's ID. Not finished. (201140 lines)
|
Version 15.203.4: Apr 23, 2016 New form to confirm another user's ID. Not finished. (201140 lines)
|
||||||
|
|
|
@ -3367,7 +3367,7 @@ static void Enr_ReqRemOrRemUsrFromCrs (Enr_ReqDelOrDelUsr_t ReqDelOrDelUsr)
|
||||||
// An administrator can remove anyone
|
// An administrator can remove anyone
|
||||||
ItsMe = (Gbl.Usrs.Me.UsrDat.UsrCod == Gbl.Usrs.Other.UsrDat.UsrCod);
|
ItsMe = (Gbl.Usrs.Me.UsrDat.UsrCod == Gbl.Usrs.Other.UsrDat.UsrCod);
|
||||||
ICanRemove = (Gbl.Usrs.Me.LoggedRole == Rol_STUDENT ? ItsMe :
|
ICanRemove = (Gbl.Usrs.Me.LoggedRole == Rol_STUDENT ? ItsMe :
|
||||||
(Gbl.Usrs.Me.LoggedRole >= Gbl.Usrs.Other.UsrDat.RoleInCurrentCrsDB));
|
(Gbl.Usrs.Me.LoggedRole >= Gbl.Usrs.Other.UsrDat.RoleInCurrentCrsDB));
|
||||||
if (ICanRemove)
|
if (ICanRemove)
|
||||||
switch (ReqDelOrDelUsr)
|
switch (ReqDelOrDelUsr)
|
||||||
{
|
{
|
||||||
|
|
|
@ -227,7 +227,7 @@ void Imp_ImportStdsFromAnImpGrp (long ImpGrpCod,struct ListCodGrps *LstGrps,unsi
|
||||||
Grp_RegisterUsrIntoGroups (&UsrDat,LstGrps); // Register student in the selected groups
|
Grp_RegisterUsrIntoGroups (&UsrDat,LstGrps); // Register student in the selected groups
|
||||||
|
|
||||||
/* Confirm user's ID */
|
/* Confirm user's ID */
|
||||||
ID_ConfirmUsrID (UsrDat.UsrCod,ImpStd.ExternalUsrID);
|
ID_ConfirmUsrID (&UsrDat,ImpStd.ExternalUsrID);
|
||||||
|
|
||||||
(*NumUsrsRegistered)++;
|
(*NumUsrsRegistered)++;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2258,7 +2258,7 @@ static bool Usr_ChkUsrAndGetUsrDataFromExternalLogin (void)
|
||||||
Usr_FreeListUsrCods (&ListUsrCods);
|
Usr_FreeListUsrCods (&ListUsrCods);
|
||||||
|
|
||||||
/* Mark user's ID as confirmed */
|
/* Mark user's ID as confirmed */
|
||||||
ID_ConfirmUsrID (Gbl.Usrs.Me.UsrDat.UsrCod,Gbl.Usrs.Me.UsrIdLogin);
|
ID_ConfirmUsrID (&Gbl.Usrs.Me.UsrDat,Gbl.Usrs.Me.UsrIdLogin);
|
||||||
|
|
||||||
/* Get user's data */
|
/* Get user's data */
|
||||||
Usr_GetAllUsrDataFromUsrCod (&Gbl.Usrs.Me.UsrDat);
|
Usr_GetAllUsrDataFromUsrCod (&Gbl.Usrs.Me.UsrDat);
|
||||||
|
|
Loading…
Reference in New Issue