source: iknow-api/Services/Implementations/RefreshTokenService.cs@ 7a1fe00

Last change on this file since 7a1fe00 was 1e58098, checked in by imbrsk <boris696boris@…>, 11 months ago

added remaining methods to refreshtoken feature

  • Property mode set to 100644
File size: 1.4 KB
Line 
1using iknow_api.DTOs;
2using iknow_api.Services;
3using System.Security.Cryptography;
4using iknow_api.Models;
5using iknow_api.Models;
6using iknow_api.Repositories;
7
8namespace iknow_api.Services
9{
10 public class RefreshTokenService : IRefreshTokenService
11 {
12 private readonly IRefreshTokenRepository _refreshTokenRepository;
13 public RefreshTokenService(IRefreshTokenRepository refreshTokenRepository)
14 {
15 _refreshTokenRepository = refreshTokenRepository;
16 }
17
18 public async Task<string> GenerateRefreshToken(int userid)
19 {
20 var randomNumber = new byte[32];
21
22 using (var rng = RandomNumberGenerator.Create())
23 {
24 rng.GetBytes(randomNumber);
25 }
26
27 var refreshToken = Convert.ToBase64String(randomNumber);
28
29 RefreshToken refreshTokenModel = new RefreshToken
30 {
31 Token = refreshToken,
32 UserId = userid,
33 ExpiresAt = DateTime.UtcNow.AddMonths(1),
34 IsValid = true
35 };
36
37 await _refreshTokenRepository.AddTokenAsync(refreshTokenModel);
38
39 return refreshToken;
40 }
41
42 public async Task<bool> VerifyRefreshToken(VerifyRefreshTokenDto refreshTokenDto)
43 {
44
45 return await _refreshTokenRepository.VerifyTokenAsync(refreshTokenDto);
46 }
47
48
49 }
50}
Note: See TracBrowser for help on using the repository browser.