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); }
public bool PerformAddOperation(string commandName, InformationSourceCollection sources, string requesterLocation, HttpFileCollection files) { if (GroupName == "") { throw new InvalidDataException("Group name must be given"); } //throw new NotImplementedException("Old implementation not converted to managed group structures"); //AccountContainer container = (AccountContainer) sources.GetDefaultSource(typeof(AccountContainer).FullName).RetrieveInformationObject(); VirtualOwner owner = VirtualOwner.FigureOwner(this); if (owner.ContainerName != "acc") { throw new NotSupportedException("Group creation only supported from account"); } string accountID = owner.LocationPrefix; TBRAccountRoot accountRoot = TBRAccountRoot.RetrieveFromDefaultLocation(accountID); TBAccount account = accountRoot.Account; if (account.Emails.CollectionContent.Count == 0) { throw new InvalidDataException("Account needs to have at least one email address to create a group"); } CreateGroup.Execute(new CreateGroupParameters { AccountID = accountID, GroupName = this.GroupName }); this.GroupName = ""; return(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 TBAccount GetAccountFromEmail(string emailAddress) { string emailRootID = TBREmailRoot.GetIDFromEmailAddress(emailAddress); TBREmailRoot emailRoot = TBREmailRoot.RetrieveFromDefaultLocation(emailRootID); TBAccount account = emailRoot.Account; return(account); }
public static string[] GetTarget_OwnerEmailAddresses(TBAccount owningAccount, TBCollaboratingGroup owningGroup) { if (owningAccount != null) { return owningAccount.Emails.CollectionContent.Select(email => email.EmailAddress).ToArray(); } return owningGroup.Roles.CollectionContent.Where(role => TBCollaboratorRole.HasInitiatorRights(role.Role)) .Select(role => role.Email.EmailAddress).ToArray(); }
public static AccountContainer GetTarget_AccountContainer(TBRAccountRoot accountRoot) { TBAccount account = accountRoot.Account; AccountContainer accountContainer = AccountContainer.RetrieveFromOwnerContent(account, "default"); if (accountContainer == null) { accountContainer = AccountContainer.CreateDefault(); accountContainer.SetLocationAsOwnerContent(account, "default"); } return(accountContainer); }
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; }
public void JoinToGroup(string emailAddress, string joinAsRole) { if (this.Roles.CollectionContent.Find(member => member.Email.EmailAddress == emailAddress) != null) { return; } TBAccount account = TBAccount.GetAccountFromEmail(emailAddress); TBEmail email = account.GetAccountEmail(emailAddress); var groupRole = new TBCollaboratorRole() { Email = email, Role = joinAsRole, RoleStatus = TBCollaboratorRole.RoleStatusMemberValue, }; //account.JoinGroup(this, groupRole); //account.StoreAndPropagate(); this.Roles.CollectionContent.Add(groupRole); }
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 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); }
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"); }