Пример #1
0
 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);
     }
 }
Пример #2
0
 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);
     }
 }
Пример #3
0
        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));
        }
Пример #4
0
 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);
     }
 }
Пример #5
0
        public Task <int> IncrementAccessFailedCountAsync(OdissUser user)
        {
            int increasedValue = (user.WrongAccessAttempts ?? 0) + 1;

            user.WrongAccessAttempts = increasedValue;

            return(Task.FromResult(increasedValue));
        }
Пример #6
0
 public IdentityMessage GenerateForgotUsernameEmail(OdissUser user)
 {
     return(new IdentityMessage
     {
         Destination = user.Email,
         Subject = "Username Reminder",
         Body = GenerateEmailBody(user, $"Your username is {user.UserName}")
     });
 }
Пример #7
0
 public IdentityMessage GeneratePasswordChangedEmail(OdissUser user)
 {
     return(new IdentityMessage
     {
         Destination = user.Email,
         Subject = "Password changed",
         Body = GenerateEmailBody(user, "Your password has been changed.")
     });
 }
Пример #8
0
        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));
        }
Пример #9
0
        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}");
        }
Пример #10
0
        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));
        }
Пример #11
0
        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));
        }
Пример #12
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)
            });
        }
Пример #13
0
        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);
        }
Пример #14
0
        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);
        }
Пример #15
0
        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);
        }
Пример #16
0
 public Task <string> GetPasswordHashAsync(OdissUser user)
 {
     return(Task.FromResult(user.Password));
 }
Пример #17
0
 public Task <bool> HasPasswordAsync(OdissUser user)
 {
     return(Task.FromResult(!string.IsNullOrEmpty(user.Password)));
 }
Пример #18
0
 public Task <bool> GetLockoutEnabledAsync(OdissUser user)
 {
     return(Task.FromResult(true));
 }
Пример #19
0
 public Task <int> GetAccessFailedCountAsync(OdissUser user)
 {
     return(Task.FromResult(user.WrongAccessAttempts ?? 0));
 }
Пример #20
0
 public Task SetTwoFactorEnabledAsync(OdissUser user, bool enabled)
 {
     return(Task.FromResult(0)); // Not using Two Factor authentication
 }
Пример #21
0
 public Task SetEmailAsync(OdissUser user, string email)
 {
     user.Email = email;
     return(Task.FromResult(0));
 }
Пример #22
0
        public Task SetLockoutEndDateAsync(OdissUser user, DateTimeOffset lockoutEnd)
        {
            user.LockAccessUntil = lockoutEnd.LocalDateTime;

            return(Task.FromResult(0));
        }
Пример #23
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");
 }
Пример #24
0
 public Task SetEmailConfirmedAsync(OdissUser user, bool confirmed)
 {
     return(Task.FromResult(0)); // Not using this
 }
Пример #25
0
 public Task <bool> GetEmailConfirmedAsync(OdissUser user)
 {
     return(Task.FromResult(true)); // Not using this
 }
Пример #26
0
 public Task <string> GetEmailAsync(OdissUser user)
 {
     return(Task.FromResult(user.Email));
 }
Пример #27
0
        public Task SetPasswordHashAsync(OdissUser user, string passwordHash)
        {
            user.Password = passwordHash;

            return(Task.FromResult(0));
        }
Пример #28
0
 public Task <bool> GetTwoFactorEnabledAsync(OdissUser user)
 {
     return(Task.FromResult(false)); // Not using Two Factor authentication
 }
Пример #29
0
        public Task ResetAccessFailedCountAsync(OdissUser user)
        {
            user.WrongAccessAttempts = null;

            return(Task.FromResult(0));
        }
Пример #30
0
        public async Task <bool> IsInRoleAsync(OdissUser user, string roleName)
        {
            var roles = await GetRolesAsync(user);

            return(roles.Contains(roleName));
        }