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); }
private static void UpdateAccountAndGroups(string accountEmail) { string emailID = TBREmailRoot.GetIDFromEmailAddress(accountEmail); TBREmailRoot emailRoot = TBREmailRoot.RetrieveFromDefaultLocation(emailID); TBRAccountRoot accountRoot = TBRAccountRoot.RetrieveFromDefaultLocation(emailRoot.Account.ID); foreach (var groupRole in accountRoot.Account.GroupRoleCollection.CollectionContent) { TBRGroupRoot groupRoot = TBRGroupRoot.RetrieveFromDefaultLocation(groupRole.GroupID); RefreshAccountGroupMemberships.Execute(new RefreshAccountGroupMembershipsParameters { AccountID = accountRoot.Account.ID, GroupRoot = groupRoot }); InformationContext.ProcessAndClearCurrent(); InformationContext.Current.InitializeCloudStorageAccess(Properties.Settings.Default.CurrentActiveContainerName); } }
private async Task HandleWebSocket(WebSocketContext wsContext) { const int maxMessageSize = 16 * 1024; byte[] receiveBuffer = new byte[maxMessageSize]; WebSocket socket = wsContext.WebSocket; Func <InformationContext, WebSocketContext, WebSocket, byte[], string, Task> OnReceiveMessage = HandleDeviceNegotiations; Action <WebSocketContext, WebSocket> OnClose = HandleCloseMessage; InformationContext informationContext = new InformationContext(); var request = HttpContext.Current.Request; string accountEmail = request.Params["accountemail"]; string groupID = request.Params["groupID"]; if (String.IsNullOrEmpty(accountEmail) == false) { string emailRootID = TBREmailRoot.GetIDFromEmailAddress(accountEmail); var emailRoot = TBREmailRoot.RetrieveFromDefaultLocation(emailRootID); if (emailRoot == null) { throw new SecurityException("No such email defined: " + accountEmail); } informationContext.Owner = emailRoot.Account; } else if (String.IsNullOrEmpty(groupID) == false) { TBRGroupRoot groupRoot = TBRGroupRoot.RetrieveFromDefaultLocation(groupID); if (groupRoot == null) { throw new SecurityException("No such groupID defined: " + groupID); } informationContext.Owner = groupRoot.Group; } while (socket.State == WebSocketState.Open) { WebSocketReceiveResult receiveResult = await socket.ReceiveAsync(new ArraySegment <byte>(receiveBuffer), CancellationToken.None); if (receiveResult.MessageType == WebSocketMessageType.Close) { await socket.CloseAsync(WebSocketCloseStatus.NormalClosure, string.Empty, CancellationToken.None); OnClose(wsContext, socket); } else if (receiveResult.MessageType == WebSocketMessageType.Binary) { //await // socket.CloseAsync(WebSocketCloseStatus.InvalidMessageType, "Cannot accept binary frame", // CancellationToken.None); int count = receiveResult.Count; while (receiveResult.EndOfMessage == false) { if (count >= maxMessageSize) { string closeMessage = string.Format("Maximum message size: {0} bytes.", maxMessageSize); await socket.CloseAsync(WebSocketCloseStatus.MessageTooBig, closeMessage, CancellationToken.None); return; } receiveResult = await socket.ReceiveAsync(new ArraySegment <byte>(receiveBuffer, count, maxMessageSize - count), CancellationToken.None); count += receiveResult.Count; } //var receivedString = Encoding.UTF8.GetString(receiveBuffer, 0, count); byte[] binaryMessage = new byte[count]; Array.Copy(receiveBuffer, binaryMessage, count); await OnReceiveMessage(informationContext, wsContext, socket, binaryMessage, null); } else { int count = receiveResult.Count; while (receiveResult.EndOfMessage == false) { if (count >= maxMessageSize) { string closeMessage = string.Format("Maximum message size: {0} bytes.", maxMessageSize); await socket.CloseAsync(WebSocketCloseStatus.MessageTooBig, closeMessage, CancellationToken.None); return; } receiveResult = await socket.ReceiveAsync(new ArraySegment <byte>(receiveBuffer, count, maxMessageSize - count), CancellationToken.None); count += receiveResult.Count; } var textMessage = Encoding.UTF8.GetString(receiveBuffer, 0, count); await OnReceiveMessage(informationContext, wsContext, socket, null, textMessage); } } }