Logout Api call

This commit is contained in:
Adam 2024-05-20 21:52:06 +02:00
parent 43d9394ebb
commit 9efe9ad250
9 changed files with 84 additions and 10 deletions

View File

@ -255,6 +255,34 @@ namespace TIAMMobileApp.Services
return isTokenRefreshed; return isTokenRefreshed;
} }
public async Task<bool> Logout(string refreshToken)
{
_logger.Info("Logout() called");
var url = $"{Setting.ApiBaseUrl}/{APIUrls.LogoutUser}";
bool result = false;
var response = await http.PostAsJsonAsync(url, RefreshToken);
if (response.IsSuccessStatusCode)
{
string resultMessage = await response.Content.ReadAsStringAsync();
_logger.Detail($"Logout response: {resultMessage}");
if (resultMessage == "OK")
{
result = true;
}
else
{
result = false;
}
}
else
{
result = false;
}
_logger.Detail($"Logout: {result}");
return result;
}
//public Task<Dictionary<int, string>> GetUserRolesAsync(UserModel userModel) //public Task<Dictionary<int, string>> GetUserRolesAsync(UserModel userModel)
//{ //{

View File

@ -126,6 +126,9 @@
private void SignOut() private void SignOut()
{ {
var userBasicDetail = JsonConvert.DeserializeObject<UserBasicDetails>(userDetailsStr);
UserDataService.Logout(userBasicDetail.RefreshToken);
SecureStorageHandler.ClearAllSecureStorageAsync(); SecureStorageHandler.ClearAllSecureStorageAsync();
sessionService.User = null; sessionService.User = null;
sessionService.IsAuthenticated = false; sessionService.IsAuthenticated = false;

View File

@ -119,7 +119,7 @@ namespace TIAMSharedUI.Pages
var user = await userDataService.IsLoggedInAsync(myId); var user = await userDataService.IsLoggedInAsync(myId);
SaveToSessionInfo(user); SaveToSessionInfo(user);
user.UserType = UserType.Admin; user.UserType = UserType.Admin;
navManager.NavigateTo("index"); navManager.NavigateTo("/");
} }
} }

View File

@ -241,7 +241,7 @@
void SendMail(Transfer item) void SendMail(Transfer item)
{ {
_logger.Info($"Sending mail to {item.ContactEmail}, {item.Id}"); _logger.Info($"Sending mail to {item.ContactEmail}, {item.Id}");
_messageWizardModel.ReceiverId = item.UserId;
_messageWizardModel.ContextId = item.Id; _messageWizardModel.ContextId = item.Id;
_messageWizardModel.SenderEmailAddress = "info@touriam.com"; _messageWizardModel.SenderEmailAddress = "info@touriam.com";
_messageWizardModel.ReceiverEmailAddress = item.ContactEmail; _messageWizardModel.ReceiverEmailAddress = item.ContactEmail;

View File

@ -14,6 +14,8 @@ using TIAMSharedUI.Resources;
using TIAMWebApp.Shared.Application.Interfaces; using TIAMWebApp.Shared.Application.Interfaces;
using TIAMWebApp.Shared.Application.Utility; using TIAMWebApp.Shared.Application.Utility;
using TIAMSharedUI.Pages.Components; using TIAMSharedUI.Pages.Components;
using TIAMWebApp.Shared.Application.Models.ClientSide;
using Newtonsoft.Json;
namespace TIAMSharedUI.Shared.Components namespace TIAMSharedUI.Shared.Components
{ {
@ -36,8 +38,8 @@ namespace TIAMSharedUI.Shared.Components
[Inject] [Inject]
public IComponentUpdateService componentUpdateService { get; set; } public IComponentUpdateService componentUpdateService { get; set; }
[Inject]
private IUserDataService UserDataService { get; set; }
private bool enableLogin = true; private bool enableLogin = true;
private bool enableEvents = false; private bool enableEvents = false;
@ -46,7 +48,6 @@ namespace TIAMSharedUI.Shared.Components
private bool enableApi = true; private bool enableApi = true;
private bool enableChat = true; private bool enableChat = true;
private bool collapseNavMenu = true; private bool collapseNavMenu = true;
private bool myUser = false; private bool myUser = false;
private bool hasProperty = false; private bool hasProperty = false;
@ -78,11 +79,21 @@ namespace TIAMSharedUI.Shared.Components
} }
private void SignOut() private async Task SignOut()
{ {
SecureStorageHandler.ClearAllSecureStorageAsync(); bool serverResult;
string userDetailsStr = await SecureStorageHandler.GetFromSecureStorageAsync(nameof(Setting.UserBasicDetails));
if (!string.IsNullOrEmpty(userDetailsStr))
{
var userBasicDetail = JsonConvert.DeserializeObject<UserBasicDetails>(userDetailsStr);
serverResult = await UserDataService.Logout(userBasicDetail.RefreshToken);
}
await SecureStorageHandler.ClearAllSecureStorageAsync();
sessionService.User = null; sessionService.User = null;
sessionService.IsAuthenticated = false; sessionService.IsAuthenticated = false;
navigationManager.NavigateTo("/");
myUser = false;
} }
private void ThrowSomeError() private void ThrowSomeError()

View File

@ -266,6 +266,34 @@ namespace TIAMWebApp.Client.Services
return isTokenRefreshed; return isTokenRefreshed;
} }
public async Task<bool> Logout(string refreshToken)
{
_logger.Info("Logout() called");
var url = $"{Setting.ApiBaseUrl}/{APIUrls.LogoutUser}";
bool result = false;
var response = await http.PostAsJsonAsync(url, refreshToken);
if (response.IsSuccessStatusCode)
{
string resultMessage = await response.Content.ReadAsStringAsync();
_logger.Detail($"Logout response: {resultMessage}");
if(resultMessage == "OK")
{
result = true;
}
else
{
result = false;
}
}
else
{
result = false;
}
_logger.Detail($"Logout: {result}");
return result;
}
/*public Task<Dictionary<int, string>> GetUserRolesAsync(UserModel userModel) /*public Task<Dictionary<int, string>> GetUserRolesAsync(UserModel userModel)
{ {

View File

@ -76,12 +76,14 @@ namespace TIAMWebApp.Server.Controllers
[AllowAnonymous] [AllowAnonymous]
[HttpPost] [HttpPost]
[Route(APIUrls.LogoutUserRouteName)] [Route(APIUrls.LogoutUserRouteName)]
public IActionResult LogoutUser() public async Task<IActionResult> LogoutUser([FromBody] string refreshToken)
{ {
_logger.Info(@"LogoutUser called");
_logger.Info($"refreshtoken: {refreshToken}");
_loginService.Logout(); _loginService.Logout();
//TODO: Implementálni a Logout-ot kliens és szerver oldalon is! - J. //TODO: Implementálni a Logout-ot kliens és szerver oldalon is! - J.
return new RedirectToActionResult(APIUrls.BaseUrlWithSlashAndVersion, null, null); return Ok("OK");
} }
[AllowAnonymous] [AllowAnonymous]

View File

@ -31,5 +31,7 @@ namespace TIAMWebApp.Shared.Application.Interfaces
public Task<UserModelDtoDetail?> GetUserDetailByIdAsync(Guid id); public Task<UserModelDtoDetail?> GetUserDetailByIdAsync(Guid id);
public Task<UserModelDto?> GetUserByEmailAsync(string email); public Task<UserModelDto?> GetUserByEmailAsync(string email);
Task<bool> RefreshToken(); Task<bool> RefreshToken();
public Task<bool> Logout(string refreshToken);
} }
} }