Skip to content

Instantly share code, notes, and snippets.

@fmshk97
Last active April 2, 2022 23:00
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fmshk97/fd819817fbbad98cd244247754aee5aa to your computer and use it in GitHub Desktop.
Save fmshk97/fd819817fbbad98cd244247754aee5aa to your computer and use it in GitHub Desktop.
IUserStore and IUserPasswordStore Implementation
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