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; } } }