");
- /* Direct log in is allowed for this degree type? */
- if (Cfg_EXTERNAL_LOGIN_SERVICE_SHORT_NAME[0]) // If external login service exists
- {
- fprintf (Gbl.F.Out,"
",
Txt_Type_of_BR_degree);
- if (Cfg_EXTERNAL_LOGIN_SERVICE_SHORT_NAME[0]) // If external login service exists
- fprintf (Gbl.F.Out,"
"
- "%s"
- "
",
- Txt_Direct_authentication);
- fprintf (Gbl.F.Out,"");
/***** Degree type name *****/
fprintf (Gbl.F.Out,"
"
@@ -1727,17 +1688,6 @@ static void Deg_PutFormToCreateDegType (void)
"",
Deg_MAX_LENGTH_DEGREE_TYPE_NAME,Gbl.Degs.EditingDegTyp.DegTypName);
- /***** Direct log in is allowed for this degree type? *****/
- if (Cfg_EXTERNAL_LOGIN_SERVICE_SHORT_NAME[0]) // If external login service exists
- fprintf (Gbl.F.Out,"
"
"",
+ Txt_Code,
+ Txt_Type_of_BR_degree,
Txt_Degrees_ABBREVIATION);
}
@@ -2051,15 +1988,9 @@ static void Deg_CreateDegreeType (struct DegreeType *DegTyp)
extern const char *Txt_Created_new_type_of_degree_X;
char Query[128+Deg_MAX_LENGTH_DEGREE_TYPE_NAME];
- if (!Cfg_EXTERNAL_LOGIN_SERVICE_SHORT_NAME[0]) // If external login service does not exist
- DegTyp->AllowDirectLogIn = true;
-
/***** Create a new degree type *****/
- sprintf (Query,"INSERT INTO deg_types"
- " SET DegTypName='%s',AllowDirectLogIn='%c'",
- DegTyp->DegTypName,
- DegTyp->AllowDirectLogIn ? 'Y' :
- 'N');
+ sprintf (Query,"INSERT INTO deg_types SET DegTypName='%s'",
+ DegTyp->DegTypName);
DB_QueryINSERT (Query,"can not create a new type of degree");
/***** Write success message *****/
@@ -2229,12 +2160,6 @@ static void Deg_GetListDegTypes (void)
strncpy (Gbl.Degs.DegTypes.Lst[NumRow].DegTypName,row[1],Deg_MAX_LENGTH_DEGREE_TYPE_NAME);
Gbl.Degs.DegTypes.Lst[NumRow].DegTypName[Deg_MAX_LENGTH_DEGREE_TYPE_NAME] = '\0';
- /* Get whether this degree type allows direct log in or not (row[2]) */
- if (Cfg_EXTERNAL_LOGIN_SERVICE_SHORT_NAME[0]) // If external login service exists
- Gbl.Degs.DegTypes.Lst[NumRow].AllowDirectLogIn = (Str_ConvertToUpperLetter (row[2][0]) == 'Y');
- else
- Gbl.Degs.DegTypes.Lst[NumRow].AllowDirectLogIn = true;
-
/* Number of degrees of this type (row[3]) */
if (sscanf (row[3],"%u",&Gbl.Degs.DegTypes.Lst[NumRow].NumDegs) != 1)
Lay_ShowErrorAndExit ("Error when getting number of degrees of a type");
@@ -2450,7 +2375,6 @@ void Deg_RecFormNewDegTyp (void)
extern const char *Txt_The_type_of_degree_X_already_exists;
extern const char *Txt_You_must_specify_the_name_of_the_new_type_of_degree;
struct DegreeType *DegTyp;
- char YN[1+1];
DegTyp = &Gbl.Degs.EditingDegTyp;
@@ -2458,15 +2382,6 @@ void Deg_RecFormNewDegTyp (void)
/* Get the name of degree type */
Par_GetParToText ("DegTypName",DegTyp->DegTypName,Deg_MAX_LENGTH_DEGREE_TYPE_NAME);
- /* Get whether this degree type allows direct log in or not */
- if (Cfg_EXTERNAL_LOGIN_SERVICE_SHORT_NAME[0]) // If external login service exists
- {
- Par_GetParToText ("AllowDirectLogIn",YN,1);
- DegTyp->AllowDirectLogIn = (Str_ConvertToUpperLetter (YN[0]) == 'Y');
- }
- else
- DegTyp->AllowDirectLogIn = true;
-
if (DegTyp->DegTypName[0]) // If there's a degree type name
{
/***** If name of degree type was in database... *****/
@@ -2727,17 +2642,12 @@ bool Deg_GetDataOfDegreeTypeByCod (struct DegreeType *DegTyp)
{
DegTyp->DegTypCod = -1L;
DegTyp->DegTypName[0] = '\0';
- if (Cfg_EXTERNAL_LOGIN_SERVICE_SHORT_NAME[0]) // If external login service exists
- DegTyp->AllowDirectLogIn = false;
- else
- DegTyp->AllowDirectLogIn = true;
DegTyp->NumDegs = 0;
return false;
}
/***** Get the name of a type of degree from database *****/
- sprintf (Query,"SELECT DegTypName,AllowDirectLogIn"
- " FROM deg_types WHERE DegTypCod='%ld'",
+ sprintf (Query,"SELECT DegTypName FROM deg_types WHERE DegTypCod='%ld'",
DegTyp->DegTypCod);
NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get the name of a type of degree");
@@ -2749,12 +2659,6 @@ bool Deg_GetDataOfDegreeTypeByCod (struct DegreeType *DegTyp)
/* Get the name of the degree type (row[0]) */
strcpy (DegTyp->DegTypName,row[0]);
- /* Get whether this degree type allows direct log in or not (row[1]) */
- if (Cfg_EXTERNAL_LOGIN_SERVICE_SHORT_NAME[0]) // If external login service exists
- DegTyp->AllowDirectLogIn = (Str_ConvertToUpperLetter (row[1][0]) == 'Y');
- else
- DegTyp->AllowDirectLogIn = true;
-
/* Count number of degrees of this type */
DegTyp->NumDegs = Deg_CountNumDegsOfType (DegTyp->DegTypCod);
@@ -2765,10 +2669,6 @@ bool Deg_GetDataOfDegreeTypeByCod (struct DegreeType *DegTyp)
{
DegTyp->DegTypCod = -1L;
DegTyp->DegTypName[0] = '\0';
- if (Cfg_EXTERNAL_LOGIN_SERVICE_SHORT_NAME[0]) // If external login service exists
- DegTyp->AllowDirectLogIn = false;
- else
- DegTyp->AllowDirectLogIn = true;
DegTyp->NumDegs = 0;
return false;
}
@@ -3336,57 +3236,6 @@ static bool Deg_CheckIfDegreeNameExists (long CtrCod,const char *FieldName,const
return (DB_QueryCOUNT (Query,"can not check if the name of a degree already existed") != 0);
}
-/*****************************************************************************/
-/************* Change whether a degree type allows direct log in *************/
-/*****************************************************************************/
-
-void Deg_ChangeDegTypeLogIn (void)
- {
- extern const char *Txt_The_type_of_degree_X_now_allows_direct_authentication;
- extern const char *Txt_The_type_of_degree_X_no_longer_allows_direct_authentication;
- struct DegreeType *DegTyp;
- char Query[512];
- char YN[1+1];
-
- DegTyp = &Gbl.Degs.EditingDegTyp;
-
- /***** Get parameters from form *****/
- /* Get degree type code */
- if ((DegTyp->DegTypCod = Deg_GetParamOtherDegTypCod ()) == -1L)
- Lay_ShowErrorAndExit ("Code of degree type is missing.");
-
- /* Get data of the degree type from database */
- if (!Deg_GetDataOfDegreeTypeByCod (DegTyp))
- Lay_ShowErrorAndExit ("Code of type of degree not found.");
-
- /* Get whether this degree type allows direct log in or not */
- if (Cfg_EXTERNAL_LOGIN_SERVICE_SHORT_NAME[0]) // If external login service exists
- {
- // Do this after getting data of degree type in order to overwrite AllowDirectLogIn with the user preference
- Par_GetParToText ("AllowDirectLogIn",YN,1);
- DegTyp->AllowDirectLogIn = (Str_ConvertToUpperLetter (YN[0]) == 'Y');
- }
- else
- DegTyp->AllowDirectLogIn = true;
-
- /***** Update table of degree types *****/
- sprintf (Query,"UPDATE deg_types SET AllowDirectLogIn='%c' WHERE DegTypCod='%ld'",
- DegTyp->AllowDirectLogIn ? 'Y' :
- 'N',
- DegTyp->DegTypCod);
- DB_QueryUPDATE (Query,"can not update the type of log in for a degree type");
-
- /***** Write message to show the change made *****/
- sprintf (Gbl.Message,
- DegTyp->AllowDirectLogIn ? Txt_The_type_of_degree_X_now_allows_direct_authentication :
- Txt_The_type_of_degree_X_no_longer_allows_direct_authentication,
- DegTyp->DegTypName);
- Lay_ShowAlert (Lay_SUCCESS,Gbl.Message);
-
- /***** Show the form again *****/
- Deg_ReqEditDegreeTypes ();
- }
-
/*****************************************************************************/
/************************ Change the type of a degree ************************/
/*****************************************************************************/
diff --git a/swad_degree.h b/swad_degree.h
index fa4fb59b4..51ef881bc 100644
--- a/swad_degree.h
+++ b/swad_degree.h
@@ -84,7 +84,6 @@ struct DegreeType
{
long DegTypCod; // Degree type code
char DegTypName[Deg_MAX_LENGTH_DEGREE_TYPE_NAME+1]; // Degree type name
- bool AllowDirectLogIn; // Does this degree type allow direct log in?
unsigned NumDegs; // Number of degrees of this type
};
@@ -139,7 +138,6 @@ long Deg_GetInsCodOfDegreeByCod (long DegCod);
void Deg_RenameDegreeType (void);
void Deg_RenameDegreeShort (void);
void Deg_RenameDegreeFull (void);
-void Deg_ChangeDegTypeLogIn (void);
void Deg_ChangeDegreeType (void);
void Deg_ChangeDegreeCtr (void);
void Deg_ChangeDegWWW (void);
diff --git a/swad_global.c b/swad_global.c
index 8e765a7b7..1ddab8922 100644
--- a/swad_global.c
+++ b/swad_global.c
@@ -225,10 +225,6 @@ void Gbl_InitializeGlobals (void)
Gbl.CurrentDegTyp.DegTyp.DegTypCod = -1L;
Gbl.CurrentDegTyp.DegTyp.DegTypName[0] = '\0';
- if (Cfg_EXTERNAL_LOGIN_SERVICE_SHORT_NAME[0]) // If external login service exists
- Gbl.CurrentDegTyp.DegTyp.AllowDirectLogIn = false;
- else
- Gbl.CurrentDegTyp.DegTyp.AllowDirectLogIn = true;
Gbl.CurrentDeg.Deg.DegCod = -1L;
Gbl.CurrentDeg.Deg.ShortName[0] = Gbl.CurrentDeg.Deg.FullName[0] = '\0';
@@ -301,9 +297,8 @@ void Gbl_InitializeGlobals (void)
Gbl.Degs.AllDegs.Num = 0;
Gbl.Degs.AllDegs.Lst = NULL;
- Gbl.Degs.EditingDegTyp.DegTypCod = -1L;
- Gbl.Degs.EditingDegTyp.DegTypName[0] = '\0';
- Gbl.Degs.EditingDegTyp.AllowDirectLogIn = true;
+ Gbl.Degs.EditingDegTyp.DegTypCod = -1L;
+ Gbl.Degs.EditingDegTyp.DegTypName[0] = '\0';
Gbl.Degs.EditingDeg.DegCod = -1L;
Gbl.Degs.EditingDeg.ShortName[0] = '\0';
diff --git a/swad_layout.c b/swad_layout.c
index ba6b2c044..7ab73f862 100644
--- a/swad_layout.c
+++ b/swad_layout.c
@@ -304,9 +304,6 @@ void Lay_WriteStartOfPage (void)
/* Start of canvas: main zone for actions output */
fprintf (Gbl.F.Out,"
");
- /* Write warning when degree type does not allow direct login */
- Usr_WarningWhenDegreeTypeDoesntAllowDirectLogin ();
-
/* If it is mandatory to read any information about course */
if (Gbl.CurrentCrs.Info.ShowMsgMustBeRead)
Inf_WriteMsgYouMustReadInfo ();
diff --git a/swad_text.c b/swad_text.c
index 5e6dd983b..6053831cc 100644
--- a/swad_text.c
+++ b/swad_text.c
@@ -7883,69 +7883,6 @@ const char *Txt_Details =
"Detalhes";
#endif
-const char *Txt_Direct_authentication =
-#if L==1
- "¿Autenticació directa?";
-#elif L==2
- "Direkte Authentifizierung?";
-#elif L==3
- "Direct authentication?";
-#elif L==4
- "¿Autenticación directa?";
-#elif L==5
- "Authentification directe?";
-#elif L==6
- "¿Autenticación directa?"; // Okoteve traducción
-#elif L==7
- "Autenticazione diretta?";
-#elif L==8
- "Bezpośredni uwierzytelniania?";
-#elif L==9
- "Autenticação direta?";
-#endif
-
-const char *Txt_Direct_authentication_allowed =
-#if L==1
- "Autenticació directa permesa";
-#elif L==2
- "Direkte Authentifizierung erlaubt";
-#elif L==3
- "Direct authentication allowed";
-#elif L==4
- "Autenticación directa permitida";
-#elif L==5
- "Authentification directe autorisée";
-#elif L==6
- "Autenticación directa permitida"; // Okoteve traducción
-#elif L==7
- "Autenticazione diretta permessa";
-#elif L==8
- "Bezpośredni uwierzytelniania dozwolone";
-#elif L==9
- "Autenticação direta permitida";
-#endif
-
-const char *Txt_Direct_authentication_not_allowed =
-#if L==1
- "Autenticació directa no permesa";
-#elif L==2
- "Direkte Authentifizierung nicht erlaubt";
-#elif L==3
- "Direct authentication not allowed";
-#elif L==4
- "Autenticación directa no permitida";
-#elif L==5
- "Authentification directe n'est pas autorisée";
-#elif L==6
- "Autenticación directa no permitida"; // Okoteve traducción
-#elif L==7
- "Autenticazione diretta non permessa";
-#elif L==8
- "Bezpośredni uwierzytelniania nie dozwolone";
-#elif L==9
- "Autenticação direta não permitida";
-#endif
-
const char *Txt_Disclaimer_the_files_hosted_here_ = // Warning: it is very important to include two %s in the following sentences
#if L==1
"Aviso legal: los archivos alojados aquí, salvo que se indique lo contrario,"
@@ -38370,69 +38307,6 @@ const char *Txt_students_ABBREVIATION = // Abbreviation of "students"
"estu.";
#endif
-const char *Txt_Students_authentication =
-#if L==1
- "Autenticació d'estudiants";
-#elif L==2
- "Studenten- Authentifizierung";
-#elif L==3
- "Students' authentication";
-#elif L==4
- "Autenticación de estudiantes";
-#elif L==5
- "Authentification des étudiants";
-#elif L==6
- "Autenticación de estudiantes"; // Okoteve traducción
-#elif L==7
- "Autenticazione degli studenti";
-#elif L==8
- "Uwierzytelnianie studentów";
-#elif L==9
- "Autenticação de estudantes";
-#endif
-
-const char *Txt_STUDENTS_may_enter_directly =
-#if L==1
- "poden entrar directament";
-#elif L==2
- "können direkt eingeben";
-#elif L==3
- "may enter directly";
-#elif L==4
- "pueden entrar directamente";
-#elif L==5
- "peuvent entrer directement";
-#elif L==6
- "pueden entrar directamente"; // Okoteve traducción
-#elif L==7
- "possono entrare direttamente";
-#elif L==8
- "moga wejść bezpośrednio";
-#elif L==9
- "podem entrar diretamente";
-#endif
-
-const char *Txt_STUDENTS_must_enter_through_X = // Warning: it is very important to include %s in the following sentences
-#if L==1
- "han d'entrar per %s";
-#elif L==2
- "müssen durch %s eingeben";
-#elif L==3
- "must enter through %s";
-#elif L==4
- "deben entrar por %s";
-#elif L==5
- "doivent entrer par %s";
-#elif L==6
- "deben entrar por %s"; // Okoteve traducción
-#elif L==7
- "devono entrare attraverso %s";
-#elif L==8
- "muszą wejść przez %s";
-#elif L==9
- "devem entrar através %s";
-#endif
-
const char *Txt_Student_record_card_in_this_course_has_been_updated =
#if L==1
"La ficha del estudiante en la asignatura se ha actualizado."; // Necessita traduccio
@@ -43863,48 +43737,6 @@ const char *Txt_The_type_of_degree_X_has_been_renamed_as_Y = // Warning: it is v
"The type of degree %s has been renamed as %s."; // Necessita de tradução
#endif
-const char *Txt_The_type_of_degree_X_no_longer_allows_direct_authentication = // Warning: it is very important to include %s in the following sentences
-#if L==1
- "El tipus de titulació %s ja no permet autenticació directa.";
-#elif L==2
- "The type of degree %s no longer allows direct authentication."; // Need Übersetzung
-#elif L==3
- "The type of degree %s no longer allows direct authentication.";
-#elif L==4
- "El tipo de titulación %s ya no permite autenticación directa.";
-#elif L==5
- "The type of degree %s no longer allows direct authentication."; // Besoin de traduction
-#elif L==6
- "El tipo de titulación %s ya no permite autenticación directa."; // Okoteve traducción
-#elif L==7
- "Il tipo di laurea %s non permette più ora l'autenticazione diretta.";
-#elif L==8
- "The type of degree %s no longer allows direct authentication."; // Potrzebujesz tlumaczenie
-#elif L==9
- "The type of degree %s no longer allows direct authentication."; // Necessita de tradução
-#endif
-
-const char *Txt_The_type_of_degree_X_now_allows_direct_authentication = // Warning: it is very important to include %s in the following sentences
-#if L==1
- "El tipus de titulació %s ara permet autenticació directa.";
-#elif L==2
- "The type of degree %s now allows direct authentication."; // Need Übersetzung
-#elif L==3
- "The type of degree %s now allows direct authentication.";
-#elif L==4
- "El tipo de titulación %s ahora permite autenticación directa.";
-#elif L==5
- "The type of degree %s now allows direct authentication."; // Besoin de traduction
-#elif L==6
- "El tipo de titulación %s ahora permite autenticación directa."; // Okoteve traducción
-#elif L==7
- "Il tipo di laurea %s permette ora l'autenticazione diretta.";
-#elif L==8
- "The type of degree %s now allows direct authentication."; // Potrzebujesz tlumaczenie
-#elif L==9
- "The type of degree %s now allows direct authentication."; // Necessita de tradução
-#endif
-
const char *Txt_The_type_of_degree_of_the_degree_X_has_changed = // Warning: it is very important to include %s in the following sentences
#if L==1
"El tipo de titulación de la titulación %s ha cambiado."; // Necessita traduccio
@@ -45675,54 +45507,6 @@ const char *Txt_There_was_an_error_in_assessing_the_test_X = // Warning: it is v
"There was an error in assessing the test %u."; // Necessita de tradução
#endif
-const char *Txt_This_course_requires_log_in_from_X_to_have_full_functionality_ = // Warning: it is very important to include four %s in the following sentences
-#if L==1
- "Esta asignatura requiere entrar"
- " desde %s"
- " para disfrutar de la funcionalidad completa."
- " Por favor, entre desde %s."; // Necessita traduccio
-#elif L==2
- "This course requires log in"
- " from %s"
- " to have full functionality."
- " Please log in from %s."; // Need Übersetzung
-#elif L==3
- "This course requires log in"
- " from %s"
- " to have full functionality."
- " Please log in from %s.";
-#elif L==4
- "Esta asignatura requiere entrar"
- " desde %s"
- " para disfrutar de la funcionalidad completa."
- " Por favor, entre desde %s.";
-#elif L==5
- "This course requires log in"
- " from %s"
- " to have full functionality."
- " Please log in from %s."; // Besoin de traduction
-#elif L==6
- "This course requires log in"
- " from %s"
- " to have full functionality."
- " Please log in from %s."; // Okoteve traducción
-#elif L==7
- "This course requires log in"
- " from %s"
- " to have full functionality."
- " Please log in from %s."; // Bisogno di traduzione
-#elif L==8
- "This course requires log in"
- " from %s"
- " to have full functionality."
- " Please log in from %s."; // Potrzebujesz tlumaczenie
-#elif L==9
- "This course requires log in"
- " from %s"
- " to have full functionality."
- " Please log in from %s."; // Necessita de tradução
-#endif
-
const char *Txt_this_field_is_filled_in_the_record_of_one_student =
#if L==1
" (dicho campo está relleno en la ficha de un estudiante)"; // Necessita traduccio
diff --git a/swad_user.c b/swad_user.c
index 6f466f5ee..168356e26 100644
--- a/swad_user.c
+++ b/swad_user.c
@@ -2581,15 +2581,7 @@ static void Usr_SetUsrRoleAndPrefs (void)
if (Gbl.CurrentCrs.Crs.CrsCod > 0)
{
if (Gbl.Usrs.Me.IBelongToCurrentCrs)
- {
- if (Gbl.Imported.ExternalRole == Rol_UNKNOWN && // I logged in directly, not from external service...
- Gbl.Usrs.Me.UsrDat.RoleInCurrentCrsDB == Rol_STUDENT && // ...and I am a student in the current course...
- !Gbl.CurrentDegTyp.DegTyp.AllowDirectLogIn && // ...but the current degree type...
- !Gbl.CurrentCrs.Crs.AllowDirectLogIn) // ...and the current course do not allow to log in directly
- Gbl.Usrs.Me.AvailableRoles = (1 << Rol_VISITOR); // In this case, my role will be visitor, and an alert will be shown
- else
- Gbl.Usrs.Me.AvailableRoles = (1 << Gbl.Usrs.Me.UsrDat.RoleInCurrentCrsDB);
- }
+ Gbl.Usrs.Me.AvailableRoles = (1 << Gbl.Usrs.Me.UsrDat.RoleInCurrentCrsDB);
else if (Gbl.Usrs.Me.MaxRole >= Rol_STUDENT)
Gbl.Usrs.Me.AvailableRoles = (1 << Rol_VISITOR);
else
@@ -2616,40 +2608,6 @@ static void Usr_SetUsrRoleAndPrefs (void)
break;
}
-/*****************************************************************************/
-/******** Write warning when degree type does not allow direct login *********/
-/*****************************************************************************/
-/*
-When is forbidden direct log in?
- Gbl.CurrentCrs.Crs.AllowDirectLogIn
- false true
- false forbidden allowed
-Gbl.CurrentDegTyp.DegTyp.AllowDirectLogIn
- true allowed allowed
-*/
-
-void Usr_WarningWhenDegreeTypeDoesntAllowDirectLogin (void)
- {
- extern const char *Txt_This_course_requires_log_in_from_X_to_have_full_functionality_;
-
- if (Cfg_EXTERNAL_LOGIN_URL[0] && Cfg_EXTERNAL_LOGIN_SERVICE_SHORT_NAME[0])
- /* If I belong to current course but my role in current course is visitor, show alert */
- if (Gbl.Usrs.Me.IBelongToCurrentCrs &&
- Gbl.Imported.ExternalRole == Rol_UNKNOWN && // I logged in directly, not from external service...
- Gbl.Usrs.Me.UsrDat.RoleInCurrentCrsDB == Rol_STUDENT && // ...and I am a student in the current course...
- !Gbl.CurrentDegTyp.DegTyp.AllowDirectLogIn && // ...but the current degree type...
- !Gbl.CurrentCrs.Crs.AllowDirectLogIn && // ...and the current course do not allow to log in directly
- (Gbl.Action.Act == ActSeeCrsInf ||
- Gbl.Action.Act == ActAutUsrInt ||
- Gbl.Action.Act == ActHom))
- {
- sprintf (Gbl.Message,Txt_This_course_requires_log_in_from_X_to_have_full_functionality_,
- Cfg_EXTERNAL_LOGIN_URL,Cfg_EXTERNAL_LOGIN_SERVICE_SHORT_NAME,
- Cfg_EXTERNAL_LOGIN_URL,Cfg_EXTERNAL_LOGIN_SERVICE_SHORT_NAME);
- Lay_ShowAlert (Lay_WARNING,Gbl.Message);
- }
- }
-
/*****************************************************************************/
/************** Show forms to log out and to change my role ******************/
/*****************************************************************************/
diff --git a/swad_user.h b/swad_user.h
index 2a6192c4e..1b71a3c5e 100644
--- a/swad_user.h
+++ b/swad_user.h
@@ -265,7 +265,6 @@ bool Usr_GetParamOtherUsrCodEncryptedAndGetUsrData (void);
void Usr_ChkUsrAndGetUsrData (void);
-void Usr_WarningWhenDegreeTypeDoesntAllowDirectLogin (void);
void Usr_ShowFormsLogoutAndRole (void);
bool Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (struct UsrData *UsrDat);