You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.7 KiB
54 lines
1.7 KiB
using CraftSharp.Models;
|
|
using System.Security.Claims;
|
|
|
|
namespace CraftSharp.Services
|
|
{
|
|
public class AuthService : IAuthService
|
|
{
|
|
private static readonly List<AppUser> CurrentUser;
|
|
|
|
static AuthService()
|
|
{
|
|
CurrentUser = new List<AppUser>
|
|
{
|
|
new AppUser { UserName = "Admin", Password = "123456", Roles = new List<string> { "admin" } }
|
|
};
|
|
}
|
|
|
|
public CurrentUser GetUser(string userName)
|
|
{
|
|
var user = CurrentUser.FirstOrDefault(w => w.UserName == userName);
|
|
|
|
if (user == null)
|
|
{
|
|
throw new Exception("User name or password invalid !");
|
|
}
|
|
|
|
var claims = new List<Claim>();
|
|
claims.AddRange(user.Roles.Select(s => new Claim(ClaimTypes.Role, s)));
|
|
|
|
return new CurrentUser
|
|
{
|
|
IsAuthenticated = true,
|
|
UserName = user.UserName,
|
|
Claims = claims.ToDictionary(c => c.Type, c => c.Value)
|
|
};
|
|
}
|
|
|
|
public void Login(ConnexionModel loginRequest)
|
|
{
|
|
var user = CurrentUser.FirstOrDefault(w => w.UserName == loginRequest.UserName && w.Password == loginRequest.Password);
|
|
|
|
if (user == null)
|
|
{
|
|
throw new Exception("User name or password invalid !");
|
|
}
|
|
}
|
|
|
|
public void Register(InscriptionModel registerRequest)
|
|
{
|
|
CurrentUser.Add(new AppUser { UserName = registerRequest.UserName, Password = registerRequest.Password, Roles = new List<string> { "guest" } });
|
|
}
|
|
}
|
|
}
|