| @@ -1,4 +1,5 @@ | |||
| using ProtoBuf.Grpc.Configuration; | |||
| using GrpcShared.DTO.Track; | |||
| using ProtoBuf.Grpc.Configuration; | |||
| using System; | |||
| using System.Collections.Generic; | |||
| using System.Linq; | |||
| @@ -10,6 +11,6 @@ namespace GrpcShared.Interfaces | |||
| [Service] | |||
| public interface IStatsService | |||
| { | |||
| Task<Track> | |||
| Task<TrackResponse> GetCurrentlyPlayingTrack(string token); | |||
| } | |||
| } | |||
| @@ -0,0 +1,26 @@ | |||
| using Blazored.SessionStorage; | |||
| using System.Security.Claims; | |||
| namespace NemAnBlazor | |||
| { | |||
| public class AuthProvider : AuthenticationStateProvider | |||
| { | |||
| private readonly ISessionStorageService _sessionStorage; | |||
| public AuthProvider(ISessionStorageService sessionStorage) | |||
| { | |||
| _sessionStorage = sessionStorage; | |||
| } | |||
| public override async Task<AuthenticationState> GetAuthenticationStateAsync() | |||
| { | |||
| string token = await _sessionStorage.GetItemAsync<string>("token"); | |||
| ClaimsIdentity identity = new (); | |||
| ClaimsPrincipal user = new (identity); | |||
| AuthenticationState state = new(user); | |||
| NotifyAuthenticationStateChanged(Task.FromResult(state)); | |||
| return state; | |||
| } | |||
| } | |||
| } | |||
| @@ -3,20 +3,15 @@ | |||
| @inject NavigationManager NavigationMgr | |||
| @inject IAuthClientService AuthService | |||
| @inject Blazored.SessionStorage.ISessionStorageService sessionStorage | |||
| <PageTitle>Callback page</PageTitle> | |||
| <PageTitle>Redirecting...</PageTitle> | |||
| <p role="status">Current count: @currentCount</p> | |||
| <p role="status">Loading...</p> | |||
| <button class="btn btn-primary" @onclick="IncrementCount">Click me</button> | |||
| @code { | |||
| private int currentCount = 0; | |||
| private void IncrementCount() | |||
| { | |||
| currentCount++; | |||
| } | |||
| protected override async Task OnInitializedAsync() | |||
| { | |||
| string url = NavigationMgr.Uri; | |||
| @@ -1,7 +1,15 @@ | |||
| @page "/home" | |||
| <h3>Home</h3> | |||
| <p>pozdrav, login radi</p> | |||
| <p>login radi</p> | |||
| <AuthorizeView> | |||
| <Authorized> | |||
| <p>autorizovan si</p> | |||
| </Authorized> | |||
| <NotAuthorized> | |||
| <p>nisi autorizovan</p> | |||
| </NotAuthorized> | |||
| </AuthorizeView> | |||
| @code { | |||
| } | |||
| @@ -1,3 +1,4 @@ | |||
| global using Microsoft.AspNetCore.Components.Authorization; | |||
| using Blazored.SessionStorage; | |||
| using Grpc.Net.Client; | |||
| using Grpc.Net.Client.Web; | |||
| @@ -28,6 +29,7 @@ builder.Services.AddScoped<AuthenticationStateProvider, AuthClientService>(); | |||
| builder.Services.AddScoped<ITrackClientService, TrackClientService>(); | |||
| builder.Services.AddScoped<IAuthClientService, AuthClientService>(); | |||
| builder.Services.AddBlazoredSessionStorage(); | |||
| builder.Services.AddScoped<AuthenticationStateProvider, AuthProvider>(); | |||
| builder.Services.AddAuthorizationCore(); | |||
| await builder.Build().RunAsync(); | |||
| @@ -1,9 +1,20 @@ | |||
| | |||
| using GrpcShared.DTO.Track; | |||
| using GrpcShared.Interfaces; | |||
| namespace SpotifyService.Services | |||
| { | |||
| public class StatsService : IStatsService | |||
| { | |||
| private readonly IHttpClientFactory _httpClientFactory; | |||
| public StatsService(IHttpClientFactory httpClientFactory) | |||
| { | |||
| _httpClientFactory = httpClientFactory; | |||
| } | |||
| public Task<TrackResponse> GetCurrentlyPlayingTrack(string token) | |||
| { | |||
| return null; | |||
| } | |||
| } | |||
| } | |||