diff options
Diffstat (limited to 'src/Services/UserService.cs')
| -rw-r--r-- | src/Services/UserService.cs | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/src/Services/UserService.cs b/src/Services/UserService.cs new file mode 100644 index 0000000..6346f0b --- /dev/null +++ b/src/Services/UserService.cs @@ -0,0 +1,77 @@ +using System.Text; +using IOL.Fagprove.Data; +using IOL.Fagprove.Data.Models; +using IOL.Fagprove.Services.Interfaces; +using IOL.Fagprove.Utilities; + +namespace IOL.Fagprove.Services +{ + public class UserService : IUserService + { + private readonly AppDbContext _context; + + public UserService(AppDbContext context) + { + _context = context; + } + + public bool SetTemporaryPasswordAndSendWelcomeMail(User user) + { + var message = new StringBuilder(); + var temporaryPassword = SetNewTemporaryPassword(user); + message.AppendLine("Hei " + user.Name); + message.AppendLine("Du har fått en bruker i din bedrifts reservasjonstjeneste."); + message.AppendLine("Logg inn på ... med din e-postadresse og passord: " + temporaryPassword); + message.AppendLine("Vi oppfordrer deg til å skifte passord med en gang du har logget på."); + var welcomeEmail = new Email + { + Message = message.ToString(), + Recepient = user.Email, + Title = "Ny bruker - Din bedrifts reservasjonstjeneste" + }; + welcomeEmail.Send(); + return welcomeEmail.Sent; + } + + public bool SetNewTemporaryPasswordAndNotifyUser(User user) + { + var message = new StringBuilder(); + var temporaryPassword = SetNewTemporaryPassword(user); + message.AppendLine("Hei " + user.Name); + message.AppendLine("Du har fått ett midlertidig passord som du kan bruke til å sette nytt passord på din bruker."); + message.AppendLine("Logg inn på ... med din e-postadresse og passord: " + temporaryPassword); + message.AppendLine("Vi oppfordrer deg til å skifte passord med en gang du har logget på."); + var passwordEmail = new Email + { + Message = message.ToString(), + Recepient = user.Email, + Title = "Midlertidig passord - Din bedrifts reservasjonstjeneste" + }; + passwordEmail.Send(); + return passwordEmail.Sent; + } + + public bool UpdatePassword(User user, string password) + { + var passwordHash = PasswordHasher.HashPassword(password); + user.Password = passwordHash; + _context.Users.Update(user); + _context.Entry(user).Property(x => x.CreatedBy).IsModified = false; + _context.Entry(user).Property(x => x.CreatedUtc).IsModified = false; + _context.Entry(user).Property(x => x.Id).IsModified = false; + _context.SaveChanges(); + return true; + } + + private string SetNewTemporaryPassword(User user) + { + var temporaryPassword = Cryptography.RandomString(6); + var temporaryPasswordHash = PasswordHasher.HashPassword(temporaryPassword); + user.Password = temporaryPasswordHash; + _context.Users.Update(user); + _context.SaveChanges(); + return temporaryPassword; + } + } +} + |
