Last active
April 2, 2022 23:00
-
-
Save fmshk97/fd819817fbbad98cd244247754aee5aa to your computer and use it in GitHub Desktop.
IUserStore and IUserPasswordStore Implementation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using Authentication.Apis.Models; | |
using Microsoft.AspNetCore.Identity; | |
using System.Linq; | |
using System.Threading; | |
using System.Threading.Tasks; | |
namespace Authentication.Apis | |
{ | |
public class AppUserStore : IUserStore<AppUser>, IUserPasswordStore<AppUser> | |
{ | |
#region IUserStore | |
public Task<IdentityResult> CreateAsync(AppUser user, CancellationToken cancellationToken) | |
{ | |
UserRepository.UsersDb.Add(new AppUser | |
{ | |
Id = user.Id, | |
UserName = user.UserName, | |
Email = user.Email, | |
NormalizeUserName = user.NormalizeUserName, | |
PasswordHash = user.PasswordHash | |
}); | |
return Task.FromResult(IdentityResult.Success); | |
} | |
public Task<IdentityResult> DeleteAsync(AppUser user, CancellationToken cancellationToken) | |
{ | |
var appUser = UserRepository.UsersDb.FirstOrDefault(u => u.Id == user.Id); | |
if (appUser != null) | |
{ | |
UserRepository.UsersDb.Remove(appUser); | |
} | |
return Task.FromResult(IdentityResult.Success); | |
} | |
public void Dispose() { } | |
public Task<AppUser> FindByIdAsync(string userId, CancellationToken cancellationToken) | |
{ | |
return Task.FromResult(UserRepository.UsersDb.FirstOrDefault(u => u.Id == userId)); | |
} | |
public Task<AppUser> FindByNameAsync(string normalizedUserName, CancellationToken cancellationToken) | |
{ | |
return Task.FromResult(UserRepository.UsersDb.FirstOrDefault(u => u.NormalizeUserName == normalizedUserName)); | |
} | |
public Task<string> GetNormalizedUserNameAsync(AppUser user, CancellationToken cancellationToken) | |
{ | |
return Task.FromResult(user.NormalizeUserName); | |
} | |
public Task<string> GetUserIdAsync(AppUser user, CancellationToken cancellationToken) | |
{ | |
return Task.FromResult(user.Id); | |
} | |
public Task<string> GetUserNameAsync(AppUser user, CancellationToken cancellationToken) | |
{ | |
return Task.FromResult(user.UserName); | |
} | |
public Task SetNormalizedUserNameAsync(AppUser user, string normalizedName, CancellationToken cancellationToken) | |
{ | |
user.NormalizeUserName = normalizedName; | |
return Task.CompletedTask; | |
} | |
public Task SetUserNameAsync(AppUser user, string userName, CancellationToken cancellationToken) | |
{ | |
user.UserName = userName; | |
return Task.CompletedTask; | |
} | |
public Task<IdentityResult> UpdateAsync(AppUser user, CancellationToken cancellationToken) | |
{ | |
var appUser = UserRepository.UsersDb.FirstOrDefault(u => u.Id == user.Id); | |
if (appUser != null) | |
{ | |
appUser.NormalizeUserName = user.NormalizeUserName; | |
appUser.UserName = user.UserName; | |
appUser.Email = user.Email; | |
appUser.PasswordHash = user.PasswordHash; | |
} | |
return Task.FromResult(IdentityResult.Success); | |
} | |
#endregion | |
#region IUserPasswordStore | |
public Task<bool> HasPasswordAsync(AppUser user, CancellationToken cancellationToken) | |
{ | |
return Task.FromResult(user.PasswordHash != null); | |
} | |
public Task<string> GetPasswordHashAsync(AppUser user, CancellationToken cancellationToken) | |
{ | |
return Task.FromResult(user.PasswordHash); | |
} | |
public Task SetPasswordHashAsync(AppUser user, string passwordHash, CancellationToken cancellationToken) | |
{ | |
user.PasswordHash = passwordHash; | |
return Task.CompletedTask; | |
} | |
#endregion | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment