add: SecurityIdentityApplicationService
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
344da21484
commit
714f2073ce
@ -0,0 +1,67 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Collections.Generic;
|
||||
using System.Security.Claims;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Identity;
|
||||
using pwt_0x01_ng.Models.Identity;
|
||||
|
||||
namespace pwt_0x01_ng.Models.ApplicationServices
|
||||
{
|
||||
public class SecurityIdentityApplicationService : ISecurityApplicationService
|
||||
{
|
||||
UserManager<User> um;
|
||||
SignInManager<User> sim;
|
||||
|
||||
public SecurityIdentityApplicationService(UserManager<User> um, SignInManager<User> sim){
|
||||
this.um = um;
|
||||
this.sim = sim;
|
||||
}
|
||||
|
||||
public async Task<string[]> register(RegisterViewModel rvm, Role role){
|
||||
User usr = new User(){username = rvm.username, password = rvm.password};
|
||||
|
||||
string[] errors = null;
|
||||
var res = await um.CreateAsync(usr, rvm.password);
|
||||
|
||||
if(res.Succeeded){
|
||||
var roleres = await um.AddToRoleAsync(usr, role.ToString());
|
||||
if(!roleres.Succeeded){
|
||||
int c = 0;
|
||||
foreach (var err in res.Errors)
|
||||
{
|
||||
res.Errors.Append(res.Errors.ElementAt(c));
|
||||
c++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(res.Errors != null && res.Errors.Count() > 0){
|
||||
errors = new string[res.Errors.Count()];
|
||||
int c = 0;
|
||||
foreach (var err in res.Errors)
|
||||
{
|
||||
errors[c] = res.Errors.ElementAt(c).Description;
|
||||
}
|
||||
c++;
|
||||
}
|
||||
return errors;
|
||||
}
|
||||
public async Task<bool> login(LoginViewModel lvm){
|
||||
var result = await sim.PasswordSignInAsync(lvm.username, lvm.password, config.remember_me_feature, config.lockout_on_failure);
|
||||
return result.Succeeded;
|
||||
}
|
||||
public Task logout(){
|
||||
return sim.SignOutAsync();
|
||||
}
|
||||
public Task<User> find_user_by_username(string username){
|
||||
return um.FindByNameAsync(username);
|
||||
}
|
||||
public Task<IList<string>> gimme_user_roles(User usr){
|
||||
return um.GetRolesAsync(usr);
|
||||
}
|
||||
public Task<User> gimme_current_user(ClaimsPrincipal claims){
|
||||
return um.GetUserAsync(claims);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user