public AuthorizeUserOptions CreateAuthorizeUserOptions( string login, string password, DateTime lastOnline = default) { var options = new AuthorizeUserOptions(); options.Login = login; options.Password = password; options.LastOnline = lastOnline; return(options); }
public User SignIn(AuthorizeUserOptions options) { var user = userRepository.GetUser(options.Login); _ = user ?? throw new ArgumentException($"Can not sign in. No user with login '{options.Login}'"); if (user.Password != options.Password) { throw new ArgumentException($"Can not sign in. Wrong password provided for login '{options.Login}'"); } var domainUser = mapper.Map <User>(user); return(domainUser); }
public OperationResult DeleteAccount(AuthorizeUserOptions options) { OperationResult operationResult; try { var domainOptions = mapper.Map <DomainOptions.AuthorizeUserOptions>(options); userService.DeleteAccount(domainOptions); operationResult = new OperationResult(OperationResultTypes.Success); } catch (Exception exception) { operationResult = new OperationResult( operationResultType: OperationResultTypes.Failure, message: exception.ToString()); } return(operationResult); }
public void SignUp(AuthorizeUserOptions options) { var domainUser = mapper.Map <User>(options); var usersInDb = userRepository.GetAllUsers(); var users = mapper.Map <IList <User> >(usersInDb); if (!Users.IsUserDataUnique(domainUser, users)) { throw new ArgumentException($"User with such login ('{options.Login}') already exists"); } if (!Users.AreUserCredentialsValid(options.Login, options.Password)) { throw new ArgumentException($"Provided user credentials for login '{options.Login}' are not valid"); } var dataUser = mapper.Map <DataEntities.User>(options); dataUser.LastUpdate = DateTime.Now; userRepository.SaveUser(dataUser); }
public void Disconnect(AuthorizeUserOptions options) { try { var domainOptions = mapper.Map <DomainOptions.AuthorizeUserOptions>(options); var domainUser = this.userService.SignIn(domainOptions); this.chatServiceCallbacks.Remove(domainUser.Login); // var affectedUsers = this.chatService.GetAffectedUsers(domainUser.Login); // foreach (var user in affectedUsers) // { // if (this.chatServiceCallbacks.ContainsKey(user.Login)) // { // var userChatServiceCallback = this.chatServiceCallbacks[user.Login]; // } // } } catch (Exception exception) { // Exception logging } }
public void DeleteAccount(AuthorizeUserOptions options) { var user = SignIn(options); userRepository.DeleteUser(user.Login); }
public OperationResult SignIn(AuthorizeUserOptions options) { OperationResult operationResult; try { var domainOptions = mapper.Map <DomainOptions.AuthorizeUserOptions>(options); var domainUser = this.userService.SignIn(domainOptions); var callback = this.CurrentSessionChatServiceCallback; if (this.chatServiceCallbacks.ContainsValue(callback)) { throw new ArgumentException($"Can not connect client (user #{domainUser.Login}). Client is already connected"); } lock (syncObject) { this.chatServiceCallbacks.Add(domainUser.Login, callback); } var domainMissedChatUpdates = this.chatService.GetMissedChatUpdates(domainUser.Login, options.LastOnline); var missedChatUpdatesOptions = this.mapper.Map <IList <CreateOrUpdateChatOptions> >(domainMissedChatUpdates); foreach (var missedChatUpdatesOption in missedChatUpdatesOptions) { var domainChatMembers = this.chatService.GetMembersOfChat(missedChatUpdatesOption.ChatId); missedChatUpdatesOption.MembersLogins = domainChatMembers .Select(chm => chm.Login) .ToList(); CreateOrUpdateChatForClient(domainUser.Login, missedChatUpdatesOption); } var domainMissedMessages = this.chatService.GetMissedMessages(domainUser.Login, options.LastOnline); var missedMessages = mapper.Map <IList <SendMessageOptions> >(domainMissedMessages); foreach (var message in missedMessages) { callback.ReceiveMessage(message); } var domainMissedDeletedMessages = this.chatService.GetMissedDeletedMessages(domainUser.Login, options.LastOnline); foreach (var message in domainMissedDeletedMessages) { callback.RemoveMessage(message.MessageId); } var domainMissedDeletedChats = this.chatService.GetMissedDeletedChats(domainUser.Login, options.LastOnline); foreach (var chat in domainMissedDeletedChats) { callback.RemoveChat(chat.ChatId); } var domainMissedChatPermissions = this.chatPermissionService.GetMissedChatPermissions(options.Login, options.LastOnline); var chatPermissionOptions = this.mapper.Map <IList <AddOrUpdateChatPermissionOptions> >(domainMissedChatPermissions); foreach (var chatPermission in chatPermissionOptions) { callback.UpdateChatPermission(chatPermission); } var userData = mapper.Map <User>(domainUser); operationResult = new OperationResult(OperationResultTypes.Success, extraData: userData); } catch (Exception exception) { operationResult = new OperationResult( operationResultType: OperationResultTypes.Failure, message: exception.ToString()); } return(operationResult); }