Skip to content

Commit

Permalink
Update auth service
Browse files Browse the repository at this point in the history
  • Loading branch information
kuro-vale committed Sep 4, 2022
1 parent a9b0887 commit 20cd121
Show file tree
Hide file tree
Showing 11 changed files with 56 additions and 87 deletions.
25 changes: 0 additions & 25 deletions .dockerignore

This file was deleted.

19 changes: 19 additions & 0 deletions Controllers/AuthController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,25 @@ public IActionResult Login([FromBody] LoginRequest loginRequest)
return Ok(token);
}

/// <summary>
/// Get logged user
/// </summary>
/// <response code="200">Success</response>
/// <response code="401">Unatuhorized</response>
[HttpGet("current")]
public IActionResult GetCurrentUser()
{
var user = (User?)HttpContext.Items["User"];

if (user == null)
{
return Unauthorized("Please login to do this");
}

user.Password = "HIDDEN";
return Ok(user);
}

/// <summary>
/// Update your user
/// </summary>
Expand Down
20 changes: 0 additions & 20 deletions Dockerfile

This file was deleted.

4 changes: 4 additions & 0 deletions Pages/Auth/CreateAddress.razor
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,10 @@
if (firstRender)
{
_token = await JsRuntime.InvokeAsync<string?>("ReadCookie.ReadCookie", "token");
if (_token == "")
{
NavigationManager.NavigateTo("/", forceLoad:true);
}
StateHasChanged();
}
}
Expand Down
4 changes: 4 additions & 0 deletions Pages/Auth/EditAddress.razor
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,10 @@
if (firstRender)
{
_token = await JsRuntime.InvokeAsync<string?>("ReadCookie.ReadCookie", "token");
if (_token == "")
{
NavigationManager.NavigateTo("/", forceLoad:true);
}
HttpClient.DefaultRequestHeaders.Authorization = AuthenticationHeaderValue.Parse(_token);
_fetchedAddress = await HttpClient.GetFromJsonAsync<Address>($"{NavigationManager.BaseUri}api/addresses/{Id}");
_address.City = _fetchedAddress!.City;
Expand Down
4 changes: 4 additions & 0 deletions Pages/Auth/Profile.razor
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,10 @@
if (firstRender)
{
_token = await JsRuntime.InvokeAsync<string?>("ReadCookie.ReadCookie", "token");
if (_token == "")
{
NavigationManager.NavigateTo("/", forceLoad:true);
}
StateHasChanged();
}
}
Expand Down
14 changes: 12 additions & 2 deletions Pages/Checkout.razor
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,9 @@
<td>@i</td>
<td>@order.Dessert!.Name</td>
<td>@order.Flavor!.Name</td>
<td><button class="btn btn-sm btn-danger rounded-circle" @onclick="() => RemoveOrder(order)">Remove</button></td>
<td>
<button class="btn btn-sm btn-danger rounded-circle" @onclick="() => RemoveOrder(order)">Remove</button>
</td>
<td>@order.GetDessertPrice().ToString("C")</td>
</tr>
i += 1;
Expand Down Expand Up @@ -96,6 +98,10 @@ else
if (firstRender)
{
_token = await JsRuntime.InvokeAsync<string?>("ReadCookie.ReadCookie", "token");
if (_token == "")
{
NavigationManager.NavigateTo("/", forceLoad:true);
}
HttpClient.DefaultRequestHeaders.Authorization = AuthenticationHeaderValue.Parse(_token);
try
{
Expand Down Expand Up @@ -134,7 +140,11 @@ else
};
HttpClient.DefaultRequestHeaders.Authorization = AuthenticationHeaderValue.Parse(_token);
await HttpClient.PostAsJsonAsync($"{NavigationManager.BaseUri}api/checkout", checkoutRequest);
NavigationManager.NavigateTo("/", forceLoad: true);
CartService.Cart = new Cart
{
Orders = new List<Order>()
};
NavigationManager.NavigateTo("/orders");
}

void RemoveOrder(Order order)
Expand Down
4 changes: 4 additions & 0 deletions Pages/Orders.razor
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,10 @@
if (firstRender)
{
var token = await JsRuntime.InvokeAsync<string?>("ReadCookie.ReadCookie", "token");
if (token == "")
{
NavigationManager.NavigateTo("/", forceLoad:true);
}
HttpClient.DefaultRequestHeaders.Authorization = AuthenticationHeaderValue.Parse(token);
try
{
Expand Down
41 changes: 5 additions & 36 deletions Services/AuthService.cs
Original file line number Diff line number Diff line change
@@ -1,50 +1,19 @@
using System.IdentityModel.Tokens.Jwt;
using System.Text;
using kuro_desserts.Data;
using System.Net.Http.Headers;
using kuro_desserts.Models;
using Microsoft.AspNetCore.Components;
using Microsoft.IdentityModel.Tokens;
using Microsoft.JSInterop;

namespace kuro_desserts.Services;

public class AuthService
{
private readonly Context _db;
public User? LoggedUser;
public User? LoggedUser { get; private set; }
public bool ShowingLogoutModal { get; private set; }

public AuthService(Context db)
public async Task SetUser(string token, HttpClient client, NavigationManager navigationManager)
{
_db = db;
}

public void SetUser(string token)
{
try
{
var tokenHandler = new JwtSecurityTokenHandler();
var key = Encoding.UTF8.GetBytes(Environment.GetEnvironmentVariable("JWT_KEY")!);
tokenHandler.ValidateToken(token, new TokenValidationParameters
{
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(key),
ValidateIssuer = false,
ValidateAudience = false
}, out var validatedToken);

var jwtToken = (JwtSecurityToken)validatedToken;
var userId = Guid.Parse(jwtToken.Claims.First(x => x.Type == "sub").Value);

var user = _db.Users.Find(userId);
if (user!.IsDeleted) return;

LoggedUser = user;
}
catch
{
// do nothing if jwt validation fails
}
client.DefaultRequestHeaders.Authorization = AuthenticationHeaderValue.Parse(token);
LoggedUser = await client.GetFromJsonAsync<User>($"{navigationManager.BaseUri}api/auth/current");
}

public static async void ClearToken(JSRuntime jsRuntime, NavigationManager navigationManager)
Expand Down
3 changes: 1 addition & 2 deletions Services/CartService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,8 @@ public class CartService
public bool DessertModalShowed { get; private set; }
public Order? Order { get; private set; }

public Cart Cart { get; } = new()
public Cart Cart { get; set; } = new()
{
Id = Guid.NewGuid(),
Orders = new List<Order>()
};

Expand Down
5 changes: 3 additions & 2 deletions Shared/NavMenu.razor
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
@using kuro_desserts.Models
@inject IJSRuntime JsRuntime;
@inject AuthService AuthService
@inject HttpClient HttpClient
@inject NavigationManager NavigationManager
@inject CartService CartService
@inject MessageService MessageService
Expand Down Expand Up @@ -61,9 +62,9 @@
if (firstRender)
{
var token = await JsRuntime.InvokeAsync<string?>("ReadCookie.ReadCookie", "token");
if (token != null)
if (token != "")
{
AuthService.SetUser(token);
await AuthService.SetUser(token!, HttpClient, NavigationManager);
}
StateHasChanged();
}
Expand Down

0 comments on commit 20cd121

Please sign in to comment.