summaryrefslogtreecommitdiffstats
path: root/src/Services/UserService.cs
diff options
context:
space:
mode:
authorivar <i@oiee.no>2025-10-19 23:41:23 +0200
committerivar <i@oiee.no>2025-10-19 23:41:23 +0200
commit3f4c0720e1e3421431e7baa20882a4a4512a7fab (patch)
tree734ca81d7d0841d8863e3f523ebba14c282dc681 /src/Services/UserService.cs
downloadfagprove-3f4c0720e1e3421431e7baa20882a4a4512a7fab.tar.xz
fagprove-3f4c0720e1e3421431e7baa20882a4a4512a7fab.zip
InitialHEADmaster
Diffstat (limited to 'src/Services/UserService.cs')
-rw-r--r--src/Services/UserService.cs77
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;
+ }
+ }
+}
+