loginToCas method
Fonction permettant de se connecter au CAS String login : Login de l'utilisatuer String password : Mot de passe de l'utilisateur String service : Service vers lequel effectuer la redirection
Implementation
Future<int> loginToCas(String login,String password, String service) async {
DateTime startDate = DateTime.now();
if (!casServiceENUM.containsKey(service)){
logger("Service passed in parameters isn't supported or doesn't exists");
return -1;
}
String casServiceEndpoint = casEndpoint + SERVICE_PARAM + casServiceENUM[service]!;
Uri cseUri = Uri.parse(casServiceEndpoint); // cseURI stands for CasServiceEndpoitURI;
Response loginPage = await session.get(
cseUri,
headers: headers
);
if (loginPage.statusCode != 200){
logger("Failed to recieve CAS Login page");
return -1;
}
BeautifulSoup soup = BeautifulSoup(loginPage.body);
Bs4Element? exec_field = soup.find('input', attrs: {"name": 'execution'});
Bs4Element? event_id_field = soup.find('input', attrs: {"name": '_eventId'});
if (exec_field == null || event_id_field == null){
logger("Failed finding required form field");
return -1;
}
String execution = exec_field["value"]!;
String eventID = event_id_field["value"]!;
Map<String,dynamic> loginData = {
'username':login,
'password':password,
'execution':execution,
'_eventId': eventID,
'submit' : 'SE CONNECTER'
};
Response response = await session.post(
cseUri,
headers: headers,
body: loginData,
);
//prepareRequest();
if (response.statusCode == 301 || response.statusCode == 303 || response.statusCode == 302){
http.Response sd = await followRedirects(response);
logger("Redirected");
if (sd.statusCode == 200){
_sessionStatus = true;
logger("Conn sucessfull");
}
}
else{
logger("Not redirected");
return -1;
}
logger(session.cookieStore.cookies);
logger("Delta between now and last conn request ${DateTime.now().difference(startDate).inSeconds} secondes");
return 1;
}