private static void ValidateAccountsEmailAddress(TBAccount account, TBEmailValidation emailValidation) { if ( account.Emails.CollectionContent.Exists( candidate => candidate.EmailAddress.ToLower() == emailValidation.Email.ToLower()) == false) throw new SecurityException("Login account does not contain email address that was target of validation"); }
public static TBEmailValidation GetTarget_EmailValidation(TBAccount owningAccount, TBCollaboratingGroup owningGroup, InformationInput informationInput, string[] ownerEmailAddresses) { TBEmailValidation emailValidation = new TBEmailValidation(); emailValidation.InformationInputConfirmation = new TBInformationInputConfirmation(); if (owningAccount != null && owningGroup != null) { throw new InvalidDataException("Both owning account and owning group cannot be defined"); } if (owningAccount == null && owningGroup == null) { throw new InvalidDataException("Both owning account and owning group must not be null"); } if (owningAccount != null) { emailValidation.InformationInputConfirmation.AccountID = owningAccount.ID; } if (owningGroup != null) { emailValidation.InformationInputConfirmation.GroupID = owningGroup.ID; } emailValidation.InformationInputConfirmation.InformationInputID = informationInput.ID; emailValidation.ValidUntil = DateTime.UtcNow.AddMinutes(30); emailValidation.Email = ownerEmailAddresses.FirstOrDefault(); if (emailValidation.Email == null) { throw new InvalidDataException("Owner must have at least one email address defined"); } return(emailValidation); }
private void HandleAccountEmailValidation(HttpContext context, TBAccount account, TBEmailValidation emailValidation) { if (account.Emails.CollectionContent.Find(candidate => candidate.EmailAddress.ToLower() == emailValidation.Email.ToLower()) == null) { TBEmail email = TBEmail.CreateDefault(); email.EmailAddress = emailValidation.Email; email.ValidatedAt = DateTime.Now; account.Emails.CollectionContent.Add(email); account.StoreAccountToRoot(); // TODO: Move Emailroot storage to account root syncs string emailRootID = TBREmailRoot.GetIDFromEmailAddress(email.EmailAddress); TBREmailRoot emailRoot = TBREmailRoot.RetrieveFromDefaultLocation(emailRootID); if (emailRoot == null) { emailRoot = TBREmailRoot.CreateDefault(); emailRoot.ID = emailRootID; emailRoot.UpdateRelativeLocationFromID(); } emailRoot.Account = account; StorageSupport.StoreInformation(emailRoot); string accountID = account.ID; UpdateAccountRootToReferences.Execute(new UpdateAccountRootToReferencesParameters { AccountID = accountID }); UpdateAccountContainerFromAccountRoot.Execute(new UpdateAccountContainerFromAccountRootParameters { AccountID = accountID }); } if(String.IsNullOrEmpty(emailValidation.RedirectUrlAfterValidation) == false) context.Response.Redirect(emailValidation.RedirectUrlAfterValidation, true); }
private static void ValidateAccountsEmailAddress(TBAccount account, TBEmailValidation emailValidation) { if ( account.Emails.CollectionContent.Exists( candidate => candidate.EmailAddress.ToLower() == emailValidation.Email.ToLower()) == false) { throw new SecurityException("Login account does not contain email address that was target of validation"); } }
public static TBEmailValidation GetTarget_EmailValidation(string memberEmailAddress, string groupID) { TBEmailValidation emailValidation = new TBEmailValidation(); emailValidation.Email = memberEmailAddress; emailValidation.ValidUntil = DateTime.UtcNow.AddDays(14); // Two weeks to accept the group join emailValidation.GroupJoinConfirmation = new TBGroupJoinConfirmation { GroupID = groupID }; return emailValidation; }
public static TBEmailValidation GetTarget_EmailValidation(string memberEmailAddress, string groupID) { TBEmailValidation emailValidation = new TBEmailValidation(); emailValidation.Email = memberEmailAddress; emailValidation.ValidUntil = DateTime.UtcNow.AddDays(14); // Two weeks to accept the group join emailValidation.GroupJoinConfirmation = new TBGroupJoinConfirmation { GroupID = groupID }; return(emailValidation); }
public static void SendDeviceJoinEmail(TBEmailValidation emailValidation, DeviceMembership deviceMembership, string[] ownerEmailAddresses) { string urlLink = GetUrlLink(emailValidation.ID); bool isAccount = emailValidation.DeviceJoinConfirmation.AccountID != null; string ownerID = isAccount ? emailValidation.DeviceJoinConfirmation.AccountID : emailValidation.DeviceJoinConfirmation.GroupID; string emailMessageFormat = InstanceConfiguration.EmailDeviceJoinMessageFormat; string message = String.Format(emailMessageFormat, deviceMembership.DeviceDescription, isAccount ? "account" : "collaboration group", ownerID, urlLink); string subject = String.Format(InstanceConfiguration.EmailDeviceJoinSubjectFormat, ownerID); foreach (string emailAddress in ownerEmailAddresses) { SendEmail(FromAddress, emailAddress, subject, message); } }
public static void Execute(InviteMemberToGroupParameters parameters) { PrepareParameters(parameters); TBRGroupRoot GroupRoot = InviteMemberToGroupImplementation.GetTarget_GroupRoot(parameters.GroupID); TBEmailValidation EmailValidation = InviteMemberToGroupImplementation.GetTarget_EmailValidation(parameters.MemberEmailAddress, parameters.GroupID); string AccountID = InviteMemberToGroupImplementation.GetTarget_AccountID(parameters.MemberEmailAddress); InviteMemberToGroupImplementation.ExecuteMethod_AddAsPendingInvitationToGroupRoot(parameters.MemberEmailAddress, GroupRoot); InviteMemberToGroupImplementation.ExecuteMethod_StoreObjects(GroupRoot, EmailValidation); InviteMemberToGroupImplementation.ExecuteMethod_SendEmailConfirmation(EmailValidation, GroupRoot); { // Local block to allow local naming RefreshAccountGroupMembershipsParameters operationParameters = InviteMemberToGroupImplementation.RefreshAccountAndGroupContainers_GetParameters(GroupRoot, AccountID); RefreshAccountGroupMemberships.Execute(operationParameters); } // Local block closing }
public static void SendGroupJoinEmail(TBEmailValidation emailValidation, TBCollaboratingGroup collaboratingGroup) { string urlLink = GetUrlLink(emailValidation.ID); QueueSupport.ReportStatistics("Group Email sent! Link: " + urlLink, TimeSpan.FromDays(1)); // string emailMessageFormat = // @"You have been invited to join in the collaboration platform by Aalto Global Impact to collaborate in the group: {0}. // // //Use the following link to accept the invitation and join the group: //{1} // // //The link is valid for 14 days, after which you need to request new invitation."; // string message = String.Format(emailMessageFormat, collaboratingGroup.Title, urlLink); // SendEmail(FromAddress, emailValidation.Email, // "Invitation to join collaboration group: " + collaboratingGroup.Title, message); }
public static TBEmailValidation GetTarget_MergeAccountEmailConfirmation(string currentAccountId, string emailAddress, string redirectUrlAfterValidation, string accountToMergeToId) { if (currentAccountId == accountToMergeToId) return null; TBEmailValidation emailValidation = new TBEmailValidation { AccountID = currentAccountId, Email = emailAddress, ValidUntil = DateTime.UtcNow.AddMinutes(5), MergeAccountsConfirmation = new TBMergeAccountConfirmation { AccountToBeMergedID = currentAccountId, AccountToMergeToID = accountToMergeToId }, RedirectUrlAfterValidation = redirectUrlAfterValidation }; return emailValidation; }
public static TBEmailValidation GetTarget_EmailValidation(TBAccount owningAccount, TBCollaboratingGroup owningGroup, InformationInput informationInput, string[] ownerEmailAddresses) { TBEmailValidation emailValidation = new TBEmailValidation(); emailValidation.InformationInputConfirmation = new TBInformationInputConfirmation(); if (owningAccount != null && owningGroup != null) throw new InvalidDataException("Both owning account and owning group cannot be defined"); if (owningAccount == null && owningGroup == null) throw new InvalidDataException("Both owning account and owning group must not be null"); if (owningAccount != null) emailValidation.InformationInputConfirmation.AccountID = owningAccount.ID; if (owningGroup != null) emailValidation.InformationInputConfirmation.GroupID = owningGroup.ID; emailValidation.InformationInputConfirmation.InformationInputID = informationInput.ID; emailValidation.ValidUntil = DateTime.UtcNow.AddMinutes(30); emailValidation.Email = ownerEmailAddresses.FirstOrDefault(); if (emailValidation.Email == null) throw new InvalidDataException("Owner must have at least one email address defined"); return emailValidation; }
private void AddAccountEmailAddressHandling() { string emailRootID = TBREmailRoot.GetIDFromEmailAddress(EmailAddress); TBREmailRoot emailRoot = TBREmailRoot.RetrieveFromDefaultLocation(emailRootID); if (emailRoot != null) { throw new InvalidDataException("Email address '" + EmailAddress + "' is already registered to the system."); } string accountID = StorageSupport.GetAccountIDFromLocation(this.RelativeLocation); VirtualOwner owner = VirtualOwner.FigureOwner(this); TBEmailValidation emailValidation = new TBEmailValidation(); emailValidation.AccountID = accountID; emailValidation.Email = this.EmailAddress; emailValidation.ValidUntil = DateTime.UtcNow.AddMinutes(30); StorageSupport.StoreInformation(emailValidation); EmailSupport.SendValidationEmail(emailValidation); }
public static void SendValidationEmail(TBEmailValidation emailValidation) { string urlLink = GetUrlLink(emailValidation.ID); QueueSupport.ReportStatistics("Email sent! Link: " + urlLink, TimeSpan.FromDays(1)); // string emailMessageFormat = // @"Welcome to The Open Innovation Platform! // // //You have just joined the collaboration platform by Aalto Global Impact. Your email address '{0}' has been registered on the OIP system. Before you start your collaboration we simply need to confirm that you did register your email. Please follow the link below during which you might be redirected to perform the authentication on OIP. // // //Use the following link to complete your registration (the link is valid for 30 minutes after which you need to resend the validation): //{1} // // //Wishing you all the best from OIP team!"; // string message = string.Format(emailMessageFormat, emailValidation.Email, urlLink); // SendEmail(FromAddress, emailValidation.Email, "Welcome to The Open Innovation Platform!", message); }
public static void SendInputJoinEmail(TBEmailValidation emailValidation, InformationInput informationInput, string[] ownerEmailAddresses) { string urlLink = GetUrlLink(emailValidation.ID); QueueSupport.ReportStatistics("Input Join Email sent! Link: " + urlLink, TimeSpan.FromDays(1)); // bool isAccount = emailValidation.InformationInputConfirmation.AccountID != null; // string ownerID = isAccount // ? emailValidation.InformationInputConfirmation.AccountID // : emailValidation.InformationInputConfirmation.GroupID; // string emailMessageFormat = // @"Your confirmation is required to allow the following information source '{0}' to be fetched within {1} ID {2}. // // //Click the following link to confirm this action: //{3}"; // string message = String.Format(emailMessageFormat, informationInput.Description, // isAccount ? "account" : "collaboration group", ownerID, urlLink); // foreach (string emailAddress in ownerEmailAddresses) // { // SendEmail(FromAddress, emailAddress, "Information Input Confirmation", message); // } }
private void HandleEmailValidation(HttpContext context) { string loginUrl = WebSupport.GetLoginUrl(context); TBRLoginRoot loginRoot = TBRLoginRoot.GetOrCreateLoginRootWithAccount(loginUrl, false); string requestPath = context.Request.Path; string emailValidationID = requestPath.Substring(AuthEmailValidationLen); TBAccount account = loginRoot.Account; TBEmailValidation emailValidation = TBEmailValidation.RetrieveFromDefaultLocation(emailValidationID); if (emailValidation == null) { RespondEmailValidationRecordNotExist(context); return; } StorageSupport.DeleteInformationObject(emailValidation); if (emailValidation.ValidUntil < DateTime.UtcNow) { RespondEmailValidationExpired(context, emailValidation); return; } if (emailValidation.GroupJoinConfirmation != null) { HandleGroupJoinConfirmation(context, account, emailValidation); } else if (emailValidation.DeviceJoinConfirmation != null) { HandleDeviceJoinConfirmation(context, account, emailValidation); } else if (emailValidation.InformationInputConfirmation != null) { HandleInputJoinConfirmation(context, account, emailValidation); } else { HandleAccountEmailValidation(context, account, emailValidation); } }
public static void ExecuteMethod_SendEmailConfirmation(InformationInput informationInput, TBEmailValidation emailValidation, string[] ownerEmailAddresses) { EmailSupport.SendInputJoinEmail(emailValidation, informationInput, ownerEmailAddresses); }
public static void ExecuteMethod_SendEmailConfirmation(DeviceMembership deviceMembership, TBEmailValidation emailValidation, string[] ownerEmailAddresses) { EmailSupport.SendDeviceJoinEmail(emailValidation, deviceMembership, ownerEmailAddresses); }
public static void ExecuteMethod_StoreObject(TBEmailValidation emailValidation) { emailValidation.StoreInformation(); }
public static void ExecuteMethod_SendEmailConfirmation(TBEmailValidation emailValidation, TBRGroupRoot groupRoot) { EmailSupport.SendGroupJoinEmail(emailValidation, groupRoot.Group); }
private void HandleAccountEmailValidation(HttpContext context, TBAccount account, TBEmailValidation emailValidation) { if (account.Emails.CollectionContent.Find(candidate => candidate.EmailAddress.ToLower() == emailValidation.Email.ToLower()) == null) { TBEmail email = TBEmail.CreateDefault(); email.EmailAddress = emailValidation.Email; email.ValidatedAt = DateTime.Now; account.Emails.CollectionContent.Add(email); account.StoreAccountToRoot(); // TODO: Move Emailroot storage to account root syncs string emailRootID = TBREmailRoot.GetIDFromEmailAddress(email.EmailAddress); TBREmailRoot emailRoot = TBREmailRoot.RetrieveFromDefaultLocation(emailRootID); if (emailRoot == null) { emailRoot = TBREmailRoot.CreateDefault(); emailRoot.ID = emailRootID; emailRoot.UpdateRelativeLocationFromID(); } emailRoot.Account = account; StorageSupport.StoreInformation(emailRoot); string accountID = account.ID; UpdateAccountRootToReferences.Execute(new UpdateAccountRootToReferencesParameters { AccountID = accountID }); UpdateAccountContainerFromAccountRoot.Execute(new UpdateAccountContainerFromAccountRootParameters { AccountID = accountID }); } context.Response.Redirect("/auth/account/website/oip-account/oip-layout-account-welcome.phtml", true); }
public static void ExecuteMethod_StoreObject(TBEmailValidation mergeAccountEmailConfirmation) { if(mergeAccountEmailConfirmation != null) mergeAccountEmailConfirmation.StoreInformation(); }
private void RespondEmailValidationExpired(HttpContext context, TBEmailValidation emailValidation) { context.Response.Write("Error to be replaced: email validation expired at: " + emailValidation.ValidUntil.ToString()); }
private void HandleGroupJoinConfirmation(HttpContext context, TBAccount account, TBEmailValidation emailValidation) { if (account.Emails.CollectionContent.Exists(candidate => candidate.EmailAddress.ToLower() == emailValidation.Email.ToLower()) == false) throw new SecurityException("Login account does not contain email address that was target of validation"); string groupID = emailValidation.GroupJoinConfirmation.GroupID; ConfirmInviteToJoinGroup.Execute(new ConfirmInviteToJoinGroupParameters {GroupID = groupID, MemberEmailAddress = emailValidation.Email}); context.Response.Redirect("/auth/grp/" + groupID + "/website/oip-group/oip-layout-groups-edit.phtml"); }
private void HandleGroupJoinConfirmation(HttpContext context, TBAccount account, TBEmailValidation emailValidation) { ValidateAccountsEmailAddress(account, emailValidation); string groupID = emailValidation.GroupJoinConfirmation.GroupID; ConfirmInviteToJoinGroup.Execute(new ConfirmInviteToJoinGroupParameters {GroupID = groupID, MemberEmailAddress = emailValidation.Email}); context.Response.Redirect("/auth/grp/" + groupID + "/"); }
private void HandleAccountMergeConfirmation(HttpContext context, TBAccount account, TBEmailValidation emailValidation) { ConfirmAccountMergeFromEmail.Execute(new ConfirmAccountMergeFromEmailParameters { CurrentAccountID = account.ID, EmailConfirmation = emailValidation }); string redirectUrl = emailValidation.RedirectUrlAfterValidation ?? "/auth/account/"; context.Response.Redirect(redirectUrl, true); }
public static TBMergeAccountConfirmation GetTarget_MergeAccountConfirmation(TBEmailValidation emailConfirmation) { return emailConfirmation.MergeAccountsConfirmation; }
public static void SendValidationEmail(TBEmailValidation emailValidation) { string urlLink = GetUrlLink(emailValidation.ID); string emailMessageFormat = @"Welcome to The Open Innovation Platform! You have just joined the collaboration platform by Aalto Global Impact. Your email address '{0}' has been registered on the OIP system. Before you start your collaboration we simply need to confirm that you did register your email. Please follow the link below during which you might be redirected to perform the authentication on OIP. Use the following link to complete your registration (the link is valid for 30 minutes after which you need to resend the validation): {1} Wishing you all the best from OIP team!"; string message = string.Format(emailMessageFormat, emailValidation.Email, urlLink); SendEmail(FromAddress, emailValidation.Email, "Welcome to The Open Innovation Platform!", message); }
private void HandleInputJoinConfirmation(HttpContext context, TBAccount account, TBEmailValidation emailValidation) { ValidateAccountsEmailAddress(account, emailValidation); VirtualOwner owner; var inputJoinInfo = emailValidation.InformationInputConfirmation; string redirectUrl; if (String.IsNullOrEmpty(inputJoinInfo.AccountID) == false) { owner = VirtualOwner.FigureOwner("acc/" + inputJoinInfo.AccountID); redirectUrl = "/auth/account/website/oip-account/oip-layout-account-welcome.phtml"; } else { string groupID = inputJoinInfo.GroupID; owner = VirtualOwner.FigureOwner("grp/" + groupID); redirectUrl = "/auth/grp/" + groupID + "/website/oip-group/oip-layout-groups-edit.phtml"; } SetInformationInputValidationAndActiveStatus.Execute( new SetInformationInputValidationAndActiveStatusParameters { Owner = owner, InformationInputID = inputJoinInfo.InformationInputID, IsValidAndActive = true }); context.Response.Redirect(redirectUrl, true); }
public static void SendGroupJoinEmail(TBEmailValidation emailValidation, TBCollaboratingGroup collaboratingGroup) { string urlLink = GetUrlLink(emailValidation.ID); string emailMessageFormat = InstanceConfiguration.EmailGroupJoinMessageFormat; string message = String.Format(emailMessageFormat, collaboratingGroup.Title, urlLink); SendEmail(FromAddress, emailValidation.Email, String.Format(InstanceConfiguration.EmailGroupJoinSubjectFormat, collaboratingGroup.Title), message); }
public static void ExecuteMethod_SendConfirmationEmail(TBEmailValidation mergeAccountEmailConfirmation) { if(mergeAccountEmailConfirmation != null) EmailSupport.SendMergeAccountsConfirmationEmail(mergeAccountEmailConfirmation); }
public static void SendOutputJoinEmail(TBEmailValidation emailValidation, InformationOutput informationOutput, string[] ownerEmailAddresses) { string urlLink = GetUrlLink(emailValidation.ID); var confirmation = emailValidation.InformationOutputConfirmation; bool isAccount = confirmation.AccountID != null; string ownerID = isAccount ? confirmation.AccountID : confirmation.GroupID; string emailMessageFormat = InstanceConfiguration.EmailOutputJoinMessageFormat; string message = String.Format(emailMessageFormat, informationOutput.OutputDescription, isAccount ? "account" : "collaboration group", ownerID, urlLink); string subject = String.Format(InstanceConfiguration.EmailOutputJoinSubjectFormat, ownerID); foreach (string emailAddress in ownerEmailAddresses) { SendEmail(FromAddress, emailAddress, subject, message); } }
public static void SendValidationEmail(TBEmailValidation emailValidation) { string urlLink = GetUrlLink(emailValidation.ID); string emailMessageFormat = InstanceConfiguration.EmailValidationMessageFormat; #if never #endif string message = string.Format(emailMessageFormat, emailValidation.Email, urlLink); SendEmail(FromAddress, emailValidation.Email, InstanceConfiguration.EmailValidationSubjectFormat, message); }
public static void ExecuteMethod_StoreObjects(TBRGroupRoot groupRoot, TBEmailValidation emailValidation) { groupRoot.StoreInformation(); emailValidation.StoreInformation(); }
public static void SendGroupJoinEmail(TBEmailValidation emailValidation, TBCollaboratingGroup collaboratingGroup) { string urlLink = GetUrlLink(emailValidation.ID); string emailMessageFormat = @"You have been invited to join in the collaboration platform by Aalto Global Impact to collaborate in the group: {0}. Use the following link to accept the invitation and join the group: {1} The link is valid for 14 days, after which you need to request new invitation."; string message = String.Format(emailMessageFormat, collaboratingGroup.Title, urlLink); SendEmail(FromAddress, emailValidation.Email, "Invitation to join collaboration group: " + collaboratingGroup.Title, message); }
private void HandleOutputJoinConfirmation(HttpContext context, TBAccount account, TBEmailValidation emailValidation) { ValidateAccountsEmailAddress(account, emailValidation); VirtualOwner owner; var outputJoinInfo = emailValidation.InformationOutputConfirmation; string redirectUrl; if (String.IsNullOrEmpty(outputJoinInfo.AccountID) == false) { owner = VirtualOwner.FigureOwner("acc/" + outputJoinInfo.AccountID); redirectUrl = "/auth/account/"; } else { string groupID = outputJoinInfo.GroupID; owner = VirtualOwner.FigureOwner("grp/" + groupID); redirectUrl = "/auth/grp/" + groupID + "/"; } SetInformationOutputValidationAndActiveStatus.Execute( new SetInformationOutputValidationAndActiveStatusParameters { Owner = owner, InformationOutputID = outputJoinInfo.InformationOutputID, IsValidAndActive = true }); context.Response.Redirect(redirectUrl, true); }
private void RespondEmailValidationExpired(HttpContext context, TBEmailValidation emailValidation) { context.Response.Redirect("/auth/account/", true); //context.Response.Write("Error to be replaced: email validation expired at: " + emailValidation.ValidUntil.ToString()); }
private void HandleGroupJoinConfirmation(HttpContext context, TBAccount account, TBEmailValidation emailValidation) { ValidateAccountsEmailAddress(account, emailValidation); string groupID = emailValidation.GroupJoinConfirmation.GroupID; ConfirmInviteToJoinGroup.Execute(new ConfirmInviteToJoinGroupParameters { GroupID = groupID, MemberEmailAddress = emailValidation.Email }); context.Response.Redirect("/auth/grp/" + groupID + "/website/oip-group/oip-layout-groups-edit.phtml"); }