public async Task UpdateAsync(OdissUser user) { using (var db = new MainDatabase().Get) { var sql = "UPDATE [dbo].[Users] SET UserName = @UserName, Password = @Password, Type = @Type, FirstName = @FirstName, LastName = @LastName, PhoneOffice = @PhoneOffice, PhoneMobile = @PhoneMobile, Email = @Email, Company = @Company, Expire = @Expire, Permissions = @Permissions, Active = @Active, LockAccessUntil = @LockAccessUntil, WrongAccessAttempts = @WrongAccessAttempts WHERE ID = @Id"; await db.ExecuteAsync(sql, user); } }
public async Task CreateAsync(OdissUser user) { using (var db = new MainDatabase().Get) { var sql = "INSERT INTO [dbo].[Users] (UserName, Password, Type, FirstName, LastName, PhoneOffice, PhoneMobile, Email, Company, Expire, Permissions, Active, LockAccessUntil, WrongAccessAttempts) VALUES (@UserName, @Password, @Type, @FirstName, @LastName, @PhoneOffice, @PhoneMobile, @Email, @Company, @Expire, @Permissions, @Active, @LockAccessUntil, @WrongAccessAttempts)"; await db.ExecuteAsync(sql, user); } }
public Task <DateTimeOffset> GetLockoutEndDateAsync(OdissUser user) { var lockOutDate = user.LockAccessUntil.HasValue ? new DateTimeOffset(DateTime.SpecifyKind(user.LockAccessUntil.Value, DateTimeKind.Local)) : new DateTimeOffset(); return(Task.FromResult(lockOutDate)); }
public async Task DeleteAsync(OdissUser user) { using (var db = new MainDatabase().Get) { var sql = "DELETE FROM [dbo].[Users] WHERE Id = @Id"; await db.ExecuteAsync(sql, user); } }
public Task <int> IncrementAccessFailedCountAsync(OdissUser user) { int increasedValue = (user.WrongAccessAttempts ?? 0) + 1; user.WrongAccessAttempts = increasedValue; return(Task.FromResult(increasedValue)); }
public IdentityMessage GenerateForgotUsernameEmail(OdissUser user) { return(new IdentityMessage { Destination = user.Email, Subject = "Username Reminder", Body = GenerateEmailBody(user, $"Your username is {user.UserName}") }); }
public IdentityMessage GeneratePasswordChangedEmail(OdissUser user) { return(new IdentityMessage { Destination = user.Email, Subject = "Password changed", Body = GenerateEmailBody(user, "Your password has been changed.") }); }
public Task <IList <string> > GetRolesAsync(OdissUser user) { IList <string> roles = OdissRoles.AllRoles .Where(x => x.Id == user.Type) .Select(x => x.Name) .ToList(); return(Task.FromResult(roles)); }
private string GenerateEmailBody(OdissUser user, string content) { var recipientName = $"{user.FirstName} {user.LastName}"; var ipAddress = principalService.GetIpAddress(); var ipUrl = $"https://www.ip-adress.com/ip-address/ipv4/{ipAddress}"; string requestorIpBlurb = $"<p style=\"font-size: 13px\">This action was requested from IP address {ipAddress}. Find out more about this address <a href=\"{ipUrl}\">here</a>.<p>"; return($"Dear {recipientName}. <br /><br />{content}<br /><br />{requestorIpBlurb}"); }
public async Task <IList <Claim> > GetClaimsAsync(OdissUser user) { var session = await sessionStore.GetByUserIdAsync(user.Id); if (session == null) { throw new NullReferenceException("No session for user found"); } return(serialization.Deserialize <IList <Claim> >(session.Data)); }
public Task AddToRoleAsync(OdissUser user, string roleName) { var role = OdissRoles.AllRoles.SingleOrDefault(x => x.Name == roleName); if (role == null) { throw new ArgumentException($"User role ${roleName} does not exists"); } user.Type = role.Id; return(Task.FromResult(0)); }
public IdentityMessage GenerateForgotPasswordEmail(OdissUser user, string passwordResetKey, string callbackUrl) { callbackUrl = callbackUrl.Replace("{token}", passwordResetKey); var emailContent = $"Please reset your password by clicking here: <a href=\"{callbackUrl}\">link</a>"; return(new IdentityMessage { Destination = user.Email, Subject = "Reset Password", Body = GenerateEmailBody(user, emailContent) }); }
public async Task SetClaimsAsync(OdissUser user, IList <Claim> claims) { var session = await sessionStore.GetByUserIdAsync(user.Id); if (session == null) { throw new NullReferenceException("No session for user found"); } session.Data = serialization.Serialize(claims); await sessionStore.UpdateAsync(session); }
public async Task AddClaimAsync(OdissUser user, Claim claim) { var session = await sessionStore.GetByUserIdAsync(user.Id); if (session == null) { throw new NullReferenceException("No session for user found"); } var claims = serialization.Deserialize <IList <Claim> >(session.Data); claims.Add(claim); session.Data = serialization.Serialize(claims); await sessionStore.UpdateAsync(session); }
public async Task RemoveClaimAsync(OdissUser user, Claim claim) { var session = await sessionStore.GetByUserIdAsync(user.Id); if (session == null) { throw new NullReferenceException("No session for user found"); } var claims = serialization.Deserialize <IList <Claim> >(session.Data); var claimToRemove = claims.FirstOrDefault(x => x.Type == claim.Type); if (claimToRemove == null) { return; } claims.Remove(claimToRemove); session.Data = serialization.Serialize(claims); await sessionStore.UpdateAsync(session); }
public Task <string> GetPasswordHashAsync(OdissUser user) { return(Task.FromResult(user.Password)); }
public Task <bool> HasPasswordAsync(OdissUser user) { return(Task.FromResult(!string.IsNullOrEmpty(user.Password))); }
public Task <bool> GetLockoutEnabledAsync(OdissUser user) { return(Task.FromResult(true)); }
public Task <int> GetAccessFailedCountAsync(OdissUser user) { return(Task.FromResult(user.WrongAccessAttempts ?? 0)); }
public Task SetTwoFactorEnabledAsync(OdissUser user, bool enabled) { return(Task.FromResult(0)); // Not using Two Factor authentication }
public Task SetEmailAsync(OdissUser user, string email) { user.Email = email; return(Task.FromResult(0)); }
public Task SetLockoutEndDateAsync(OdissUser user, DateTimeOffset lockoutEnd) { user.LockAccessUntil = lockoutEnd.LocalDateTime; return(Task.FromResult(0)); }
public Task SetLockoutEnabledAsync(OdissUser user, bool enabled) { throw new NotSupportedException("All Users have Lockout Enabled and there is no mechanism to change that per user"); }
public Task SetEmailConfirmedAsync(OdissUser user, bool confirmed) { return(Task.FromResult(0)); // Not using this }
public Task <bool> GetEmailConfirmedAsync(OdissUser user) { return(Task.FromResult(true)); // Not using this }
public Task <string> GetEmailAsync(OdissUser user) { return(Task.FromResult(user.Email)); }
public Task SetPasswordHashAsync(OdissUser user, string passwordHash) { user.Password = passwordHash; return(Task.FromResult(0)); }
public Task <bool> GetTwoFactorEnabledAsync(OdissUser user) { return(Task.FromResult(false)); // Not using Two Factor authentication }
public Task ResetAccessFailedCountAsync(OdissUser user) { user.WrongAccessAttempts = null; return(Task.FromResult(0)); }
public async Task <bool> IsInRoleAsync(OdissUser user, string roleName) { var roles = await GetRolesAsync(user); return(roles.Contains(roleName)); }