/// <summary> Activate account </summary> public DataResult <ActivationRequest> ActivateAccount(string activationToken) { DataResult <ActivationRequest> drDefaultResponse = new DataResult <ActivationRequest>() { Success = false, ErrorMessage = "Unable to process your activation request" }; DataResult <ActivationRequest> drActivationRequest = database.GetActivationRequest(activationToken); if (!drActivationRequest.Success) { return(drDefaultResponse); } ActivationRequest activationRequest = drActivationRequest.Data.FirstOrDefault(); if (activationRequest == null) { return(drDefaultResponse); } DataResult <User> drUser = database.GetUser(new User { Id = activationRequest.UserId }); if (!drUser.Success) { return(drDefaultResponse); } User user = drUser.Data.FirstOrDefault(); if (user == null) { return(drDefaultResponse); } user.Activated = true; DataResult <User> drUserUpdated = database.UpdateUser(user); if (!drUserUpdated.Success) { return(drDefaultResponse); } DataResult <ActivationRequest> drDeleteRecoveryRequest = database.DeleteActivationRequest(activationRequest); return(drDeleteRecoveryRequest); }
/// <summary> Register a new user </summary> public DataResult <User> RegisterUser(User user) { Validator validator = new Validator(); user.CreationDate = DateTime.Now; string hashedPassword = validator.PasswordHasher(user); user.Password = hashedPassword; DataResult <User> dr = database.CreateUser(user); if (!dr.Success) { return(dr); } // Todo => send an email to the user before the account is activated Mailer mailer = new Mailer(); string activationToken = validator.RandomTemporaryString(12); ActivationRequest activationRequest = new ActivationRequest { UserId = user.Id, Token = activationToken }; database.StoreActivationRequest(activationRequest); string link = DASHBOARD_URL + "activate/" + activationToken; string body = string.Empty; body += "Hi, \n\n"; body += "<a href=" + link + ">Click here</a> to activate your account \n\n"; body += "Monoid Inc."; string title = "Account activation"; string subject = "Monoid Dashboard: " + title; string recipient = user.EmailAddress; mailer.SendEmail(body, subject, title, new[] { recipient }); return(dr); }
// Delete activationrequest public DataResult <ActivationRequest> DeleteActivationRequest(ActivationRequest ar) { DataResult <ActivationRequest> result = new DataResult <ActivationRequest>(); if (!mOnline) { result.Success = false; result.ErrorMessage = DB_ERROR; return(result); } try { GetActivationRequestCollection().DeleteOne(Builders <ActivationRequest> .Filter.Eq(x => x.Token, ar.Token)); result.Success = true; } catch (Exception ex) { result.Success = false; result.ErrorMessage = ex.Message; } return(result); }
// Store activationrequest public DataResult <ActivationRequest> StoreActivationRequest(ActivationRequest ar) { DataResult <ActivationRequest> result = new DataResult <ActivationRequest>(); if (!mOnline) { result.Success = false; result.ErrorMessage = DB_ERROR; return(result); } try { GetActivationRequestCollection().InsertOne(ar); result.Success = true; } catch (Exception ex) { result.Success = false; result.ErrorMessage = ex.Message; } return(result); }