Completata user login...

This commit is contained in:
Samuele E. Locatelli
2019-03-29 12:30:59 +01:00
parent ef914c5aae
commit 047cb3514e
3 changed files with 99 additions and 19 deletions
+68 -19
View File
@@ -1039,9 +1039,8 @@ namespace MConnectSDK
// inizio da watchdog...
setWatchdog();
var userList = new UserPayload();
List<UserData> answ = userListMConnect();
// salvo in cache locale (comunque...)
userListCache = answ;
updateUserListCacheFromCloud();
List<UserData> answ = userListCache;
// aggiungo nella risposta...
userList.UserList = answ;
userList.Message = $"{answ.Count} Users Found!";
@@ -1061,7 +1060,6 @@ namespace MConnectSDK
var taskCliInfo = Task.Run(() => GetClientStatusAsync());
taskCliInfo.Wait();
// faccio la chiamata x elenco utenti...
// parametri chiamata...SENZA /api...
string shortBaseUrl = BaseUrl.Replace("/api", "");
@@ -1116,7 +1114,7 @@ namespace MConnectSDK
// inizio da watchdog...
setWatchdog();
var userList = new UserPayload();
List<UserData> answ = userListMConnect();
List<UserData> answ = userListCache;
// filtro SOLO per stato (improted)
var resFilt = answ.FindAll(X => X.LoginStatus == UserStatus.IMPORTED);
if (resFilt.Count > 0)
@@ -1151,7 +1149,7 @@ namespace MConnectSDK
// inizio da watchdog...
setWatchdog();
var userList = new UserPayload();
List<UserData> answ = userListMConnect();
List<UserData> answ = userListCache;
// CERCO utente x settare importato...
if (answ.Exists(x => x.Username == username))
{
@@ -1222,9 +1220,13 @@ namespace MConnectSDK
{
// inizio da watchdog...
setWatchdog();
// controllo con la chiamata della clientInfo...
var taskCliInfo = Task.Run(() => GetClientStatusAsync());
taskCliInfo.Wait();
// parto pessimista...
bool userOk = false;
// variabilia ccessorie
// variabili accessorie
var userList = new UserPayload();
UserData answ = new UserData();
ErrorResult errore = new ErrorResult();
@@ -1233,8 +1235,53 @@ namespace MConnectSDK
{
// recupero ed aggiorno userListcache
updateUserListCacheFromCloud();
// cerco in utenti simulati che ci sia
UserData userFound = userListCache.Find(x => x.Username == username);
UserData userFound = new UserData();
// se sono online --> login
if (reqStatus.CloudStatusOk)
{
//Uri callUri = new Uri(BaseUrl + $"/FAKE/auth/login");
Uri callUri = new Uri(BaseUrl + $"/{organizationCode}/auth/login");
var payload = "{\"Username\": \"" + username + "\",\"Password\": \"" + password + "\"}";
HttpContent callCont = new StringContent(payload, Encoding.UTF8, "application/json");
// effettuo call effettiva
var taskRes = Task.Run(() => Utils.PostURI(callUri, callCont));
taskRes.Wait();
var rawResult = taskRes.Result;
if (rawResult != "")
{
// deserializzo
var resp = JsonConvert.DeserializeObject<userLoginResponse>(rawResult);
// controllo risultato: se 200 / status OK --> loggato!
if (resp.status == "Ok" || resp.statusCode == 200)
{
// creo obj userData...
Image userImg = null;
var item = resp.result.user;
userFound = new UserData()
{
UserId = item.Id,
IsAdmin = item.IsAdmin,
Username = item.Username,
Email = item.Email,
Cognome = item.Lastname,
Nome = item.Firstname,
UserImage = userImg
};
}
else
{
userFound = null;
}
}
else
{ }
}
// se sono offline --> cache locale!
else
{
// cerco in utenti che ci sia
userFound = userListCache.Find(x => x.Username == username);
}
if (userFound != null)
{
// controllo che sia VALIDO e NON deleted...
@@ -1357,17 +1404,19 @@ namespace MConnectSDK
/// </summary>
private void updateUserListCacheFromCloud()
{
if (_currParam.testMode)
{
// non faccio nulla se non attesa...
Thread.Sleep(500);
}
else
{
// se NON modalità testing LEGGO davvero da cloud
// effettuo confronto e segno deleted i NON presenti (SE importati) con chaimata...
}
// se NON modalità testing LEGGO davvero da cloud la NUOVA lista
List<UserData> answ = userListMConnect();
#if false
// salvo elenco corrente
var currUser = userListCache;
// possibile fare cancellazione "logica" per utenti improtati e NON + presenti...
#endif
// salvo in cache locale (comunque...)
userListCache = answ;
}
/// <summary>
+29
View File
@@ -271,6 +271,35 @@ namespace MConnectSDK
/// </summary>
public List<userData> result;
}
/// <summary>
/// Struttura dati risposta LOGIN UTENTE utenti
/// </summary>
public class userLoginResponse
{
/// <summary>
/// Stato della risposta
/// </summary>
public string status;
/// <summary>
/// Valore risposta
/// </summary>
public int statusCode;
/// <summary>
/// Messaggio della risposta
/// </summary>
public string message;
/// <summary>
/// Utente trovato
/// </summary>
public userLoginData result;
}
public class userLoginData
{
public userData user { get; set; }
public string token { get; set; }
public string refreshToken { get; set; }
}
public class userData
{
+2
View File
@@ -397,6 +397,7 @@ namespace TestClient
await Task.Run(() =>
{
var userResult = MCC.getUserImportedListAsync();
userResult.Wait();
List<UserData> userList = ((UserPayload)userResult.Result.Payload).UserList;
synchronizationContext.Post(new SendOrPostCallback(o =>
@@ -439,6 +440,7 @@ namespace TestClient
{
UserData userData = new UserData();
var userResult = MCC.TryUserLogin(user, pwd);
userResult.Wait();
var currImage = pictBox.Image;
//if (userData.Username != "")