Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion eventz-api/Eventz.Application/Dtos/LoginDto.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

namespace Eventz.Application.Dtos
{
internal class LoginDto
public class LoginDto
{
public string Email { get; set; }
public string Password { get; set; }
Expand Down
2 changes: 2 additions & 0 deletions eventz-api/Eventz.Application/Interfaces/IAuth.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ namespace Eventz.Application.Interfaces
public interface IAuth
{
public Task<RegisterDto> RegisterUser(RegisterDto registerDto);

public Task<LoginDto> LoginUser(LoginDto loginDto);
}

}
14 changes: 14 additions & 0 deletions eventz-api/Eventz.Application/Interfaces/IToken.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
using Eventz.Domain.Entitites;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Eventz.Application.Interfaces
{
public interface IToken
{
string GenerateAcesstoken(User user);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.2.0" />
</ItemGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,5 +36,11 @@ public async Task<RegisterDto> RegisterUser (RegisterDto registerDto)
};

}


public async Task<LoginDto> LoginUser ()
{
return;
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
using Eventz.Application.Interfaces;
using Eventz.Domain.Entitites;
using Microsoft.Extensions.Configuration;
using Microsoft.IdentityModel.Tokens;
using System;
using System.Collections.Generic;
using System.IdentityModel.Tokens.Jwt;
using System.Linq;
using System.Security.Claims;
using System.Text;
using System.Threading.Tasks;

namespace Eventz.Infrastructure.Repositories.Auth
{
public class TokenRepository : IToken
{
private IConfiguration _configuration;
public TokenRepository(IConfiguration configuration)
{
_configuration = configuration;
}

public string GenerateAcesstoken(User user)
{
var claims = new[]
{
new Claim(JwtRegisteredClaimNames.Sub, user.UserToken.ToString()),
new Claim(JwtRegisteredClaimNames.Email, user.Email.ToString()),
new Claim(JwtRegisteredClaimNames.Name, user.UserName)
};

var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["Jwt:Key"]!));

var credentials = new SigningCredentials(
key,
SecurityAlgorithms.HmacSha256);

var token = new JwtSecurityToken(
issuer: _configuration["Jwt:Issuer"],
audience: _configuration["Jwt:Audience"],
claims: claims,
expires: DateTime.UtcNow.AddMinutes(
int.Parse(_configuration["Jwt:ExpiryMinutes"]!)),
signingCredentials: credentials);

return new JwtSecurityTokenHandler().WriteToken(token);
}
}
}
Loading