public async Task <IActionResult> Logout(CancellationToken cancellationToken) { var command = new SignOutCommand(); await _mediator.Send(command, cancellationToken); return(RedirectToAction("Index", "Home")); }
public async Task SignOutAsync() { var userId = User.Identity.GetId(); var command = new SignOutCommand(userId); await Mediator.Send(command); }
public BaseViewModel(IUserDialogs userDialogs, IMvxMessenger mvxMessenger, AppHelper appHelper) { _userDialogs = userDialogs; _mvxMessenger = mvxMessenger; _appHelper = appHelper; {} SignOutCommand = ReactiveCommand .CreateFromObservable <Unit, bool>((_) => _appHelper.RequestConfirmation(AppResources.Profile_Confirm_SignOut) .Where((confirmed) => confirmed)); SignOutCommand.ThrownExceptions.Subscribe(HandleExceptions); SignOutCommand.Subscribe((_) => { if (Settings.Current.DeviceRegistered) { Mvx.Resolve <INotificationService>()?.unsubscribeDevice().Subscribe((result) => { Settings.Current.DeviceRegistered = false; Debug.WriteLine("Device successfully removed from device group "); }); } Bullytect.Core.Config.Settings.AccessToken = null; ShowViewModel <AuthenticationViewModel>(new AuthenticationViewModel.AuthenticationParameter() { ReasonForAuthentication = AuthenticationViewModel.SIGN_OUT }); }); }
public async Task SignOutAsync(SignOutCommand command, CancellationToken cancellationToken = default) { var(force, session) = command; var context = CommandContext.GetCurrent(); string?userId; if (Computed.IsInvalidating()) { GetUserAsync(session, default).Ignore(); userId = context.Items.TryGet <OperationItem <string?> >()?.Value; if (userId != null) { GetUserSessionsAsync(userId, default).Ignore(); } if (force) { IsSignOutForcedAsync(session, default).Ignore(); } return; } await using var dbContext = await CreateCommandDbContextAsync(cancellationToken).ConfigureAwait(false); var dbSession = await GetOrCreateSessionAsync(dbContext, session, cancellationToken).ConfigureAwait(false); userId = dbSession.UserId; dbSession.IsSignOutForced = force; dbSession.UserId = null; context.Items.Set(OperationItem.New(userId)); await dbContext.SaveChangesAsync(cancellationToken); }
public UserPageViewModel(INavigationService navigationService, IPageDialogService pageDialogService, IGoogleService googleService, IFacebookService facebookService, IAppleService appleService) : base(navigationService) { _pageDialogService = pageDialogService; _googleService = googleService; _facebookService = facebookService; _appleService = appleService; _multiFactorService = new MultiFactorService(this); Title = "User"; var user = _auth.CurrentUser; Update(user); Name = new ReactivePropertySlim <string>(user?.DisplayName); Email = new ReactivePropertySlim <string>(user?.Email); PhoneNumber = new ReactivePropertySlim <string>(user?.PhoneNumber); _isEnrolledMultiFactor.Value = user.MultiFactor.EnrolledFactors.Any(); UpdateNameCommand.Subscribe(UpdateName); UpdateEmailCommand.Subscribe(UpdateEmail); UpdatePhoneNumberCommand.Subscribe(UpdatePhoneNumber); SignOutCommand.Subscribe(SignOut); LinkOrUnlinkWithGoogleCommand.Subscribe(() => IsLinkedWithGoogle.Value ? UnlinkWithProvider("google.com") : LinkWithGoogle()); LinkOrUnlinkWithTwitterCommand.Subscribe(() => IsLinkedWithTwitter.Value ? UnlinkWithProvider("twitter.com") : LinkWithProvider("twitter.com")); LinkOrUnlinkWithFacebookCommand.Subscribe(() => IsLinkedWithFacebook.Value ? UnlinkWithProvider("facebook.com") : LinkWithFacebook()); LinkOrUnlinkWithGitHubCommand.Subscribe(() => IsLinkedWithGitHub.Value ? UnlinkWithProvider("github.com") : LinkWithProvider("github.com")); LinkOrUnlinkWithYahooCommand.Subscribe(() => IsLinkedWithYahoo.Value ? UnlinkWithProvider("yahoo.com") : LinkWithProvider("yahoo.com")); LinkOrUnlinkWithMicrosoftCommand.Subscribe(() => IsLinkedWithMicrosoft.Value ? UnlinkWithProvider("microsoft.com") : LinkWithProvider("microsoft.com")); LinkOrUnlinkWithAppleCommand.Subscribe(() => IsLinkedWithApple.Value ? UnlinkWithProvider("apple.com") : LinkWithApple()); EnrollOrUnenrollMultiFactorCommand.Subscribe(() => IsEnrolledMultiFactor.Value ? UnenrollMultiFactor() : EnrollMultiFactor()); DeleteCommand.Subscribe(Delete); }
public async Task <IActionResult> SignOut() { var command = new SignOutCommand(); await _mediator.Send(command); return(Ok()); }
private ICommand CreateSignOutCommand() { var command = new SignOutCommand( this.ninjectKernel.Get <IUserService>(), this.ninjectKernel.Get <IServerChatService>(), this.mainWindowViewModel); return(command); }
public UserPageViewModel(INavigationService navigationService, IPageDialogService pageDialogService, IAuthService authService) : base(navigationService) { _pageDialogService = pageDialogService; _authService = authService; Title = "User"; _user.Value = CrossFirebaseAuth.Current.Instance.CurrentUser; Name = new ReactivePropertySlim <string>(_user.Value?.DisplayName); Email = new ReactivePropertySlim <string>(_user.Value?.Email); PhoneNumber = new ReactivePropertySlim <string>(_user.Value?.PhoneNumber); IsLinkedWithGoogle = _user.Where(user => user != null) .Select(user => user.ProviderData.FirstOrDefault(data => data.ProviderId == CrossFirebaseAuth.Current.GoogleAuthProvider.ProviderId) != null) .ToReadOnlyReactivePropertySlim(); IsLinkedWithTwitter = _user.Where(user => user != null) .Select(user => user.ProviderData.FirstOrDefault(data => data.ProviderId == CrossFirebaseAuth.Current.TwitterAuthProvider.ProviderId) != null) .ToReadOnlyReactivePropertySlim(); IsLinkedWithFacebook = _user.Where(user => user != null) .Select(user => user.ProviderData.FirstOrDefault(data => data.ProviderId == CrossFirebaseAuth.Current.FacebookAuthProvider.ProviderId) != null) .ToReadOnlyReactivePropertySlim(); IsLinkedWithGitHub = _user.Where(user => user != null) .Select(user => user.ProviderData.FirstOrDefault(data => data.ProviderId == CrossFirebaseAuth.Current.GitHubAuthProvider.ProviderId) != null) .ToReadOnlyReactivePropertySlim(); _user.Where(user => user != null) .Select(user => user.DisplayName) .DistinctUntilChanged() .Subscribe(name => Name.Value = name); _user.Where(user => user != null) .Select(user => user.Email) .DistinctUntilChanged() .Subscribe(email => Email.Value = email); _user.Where(user => user != null) .Select(user => user.PhoneNumber) .DistinctUntilChanged() .Subscribe(phoneNumber => PhoneNumber.Value = phoneNumber); UpdateNameCommand.Subscribe(UpdateName); UpdateEmailCommand.Subscribe(UpdateEmail); UpdatePhoneNumberCommand.Subscribe(UpdatePhoneNumber); SignOutCommand.Subscribe(SignOut); LinkOrUnlinkWithGoogleCommand.Subscribe(() => IsLinkedWithGoogle.Value ? UnlinkWithGoogle() : LinkWithGoogle()); LinkOrUnlinkWithTwitterCommand.Subscribe(() => IsLinkedWithTwitter.Value ? UnlinkWithTwitter() : LinkWithTwitter()); LinkOrUnlinkWithFacebookCommand.Subscribe(() => IsLinkedWithFacebook.Value ? UnlinkWithFacebook() : LinkWithFacebook()); LinkOrUnlinkWithGitHubCommand.Subscribe(() => IsLinkedWithGitHub.Value ? UnlinkWithGitHub() : LinkWithGitHub()); DeleteCommand.Subscribe(Delete); }
public SignOutResult Handle(SignOutCommand command) { Task.Run(() => _signInManager.SignOutAsync()).Wait(); var user = _userManager.GetUserAsync(_contextAccessor.HttpContext.User).Result; if (user != null) { var deleteResult = _userManager.DeleteAsync(user).Result; } return(new SignOutResult()); }
public MainWindowVm() { SignInCommand = new SignInCommand(); SignOutCommand = new SignOutCommand(); AddAnimalCommand = new AddAnimalCommand(); EditAnimalCommand = new EditAnimalCommand(); DeleteAnimalCommand = new DeleteAnimalCommand(); CallVaccineCommand = new CallVaccineCommand(); CallTreatmentCommand = new CallTreatmentCommand(); CompleteCallCommand = new CompleteCallCommand(); ShowVaccinationCardCommand = new ShowVaccinationCardCommand(); SignInCommand.Execute(this); Update(); }
public HomeVM(User loggedInUser, Window view) { //System.Diagnostics.PresentationTraceSources.SetTraceLevel(this.View.dataGrid.ItemContainerGenerator, System.Diagnostics.PresentationTraceLevel.High); CurrentUser = loggedInUser; this.View = view; //InMemoryAppender.LogData selectedSubstationChangedCmd = new SubstationSelectionChanged(this); selectedDeviceChangedCmd = new DeviceSelectionChanged(this); openAddSubstationDialogCmd = new OpenAddSubstation(this); deleteSubstationCmd = new DeleteSubstation(this); redoCmd = new RedoCommand(this); undoCmd = new UndoCommand(this); openEditSubstationCmd = new OpenEditSubstation(this); refreshCommand = new RefreshCommand(this); signOutCmd = new SignOutCommand(this); openAddUserCmd = new OpenAddUser(this); openEditUserDataCmd = new OpenEditUserData(this); cloneSubstationCmd = new CloneSubstationCmd(this); filterSubstationCmd = new FilterSubstationsCmd(this); openAddDeviceCmd = new OpenAddDevice(this); deleteDeviceCmd = new DeleteDeviceCmd(this); openAddMeasurementCmd = new OpenAddMeasurement(this); deleteMeasurementCmd = new DeleteMeasurement(this); #region initialize Undo/Redo data holders RedoHistory = new List <BaseCommand>(); UndoHistory = new List <BaseCommand>(); SubstationsUndo = new List <Substation>(); DevicesUndo = new List <Device>(); MeasurementsUndo = new List <Measurement>(); SubstationsRedo = new List <Substation>(); DevicesRedo = new List <Device>(); MeasurementsRedo = new List <Measurement>(); #endregion FilterName = ""; FilterLocation = ""; //CurrentUser = UserProxy.Instance.Proxy.Login("admin", "admin"); visibleIfAdmin = CurrentUser.isAdmin ? "Visible" : "Hidden"; // show/hide GUI elements based on priviledge RefreshData(); }
public bool SignOut(SignOutCommand signOutCommand) { try { using (var db = _paintStoreContext) { var userToSignOut = db.Users.First(x => x.Id == signOutCommand.UserId); userToSignOut.Token = CredentialsHelpers.CreateSalt(); db.SaveChanges(); } return(true); } catch (Exception) { return(false); } }
public virtual async Task UpdateAuthState(HttpContext httpContext, CancellationToken cancellationToken = default) { var httpUser = httpContext.User; var httpAuthenticationSchema = httpUser.Identity?.AuthenticationType ?? ""; var isAuthenticated = !string.IsNullOrEmpty(httpAuthenticationSchema); var session = SessionResolver.Session; var ipAddress = httpContext.Connection.RemoteIpAddress?.ToString() ?? ""; var userAgent = httpContext.Request.Headers.TryGetValue("User-Agent", out var userAgentValues) ? userAgentValues.FirstOrDefault() ?? "" : ""; var setupSessionCommand = new SetupSessionCommand(session, ipAddress, userAgent).MarkServerSide(); var sessionInfo = await AuthService.SetupSession(setupSessionCommand, cancellationToken).ConfigureAwait(false); var userId = sessionInfo.UserId; var userIsAuthenticated = sessionInfo.IsAuthenticated && !sessionInfo.IsSignOutForced; var user = userIsAuthenticated ? (await AuthService.TryGetUser(userId, cancellationToken).ConfigureAwait(false) ?? throw new KeyNotFoundException()) : new User(session.Id); // Guest try { if (isAuthenticated) { if (userIsAuthenticated && IsSameUser(user, httpUser, httpAuthenticationSchema)) { return; } var(newUser, authenticatedIdentity) = CreateOrUpdateUser(user, httpUser, httpAuthenticationSchema); var signInCommand = new SignInCommand(session, newUser, authenticatedIdentity).MarkServerSide(); await AuthService.SignIn(signInCommand, cancellationToken).ConfigureAwait(false); } else { if (userIsAuthenticated) { var signOutCommand = new SignOutCommand(session); await AuthService.SignOut(signOutCommand, cancellationToken).ConfigureAwait(false); } } } finally { // Ideally this should be done once important things are completed Task.Run(() => AuthService.UpdatePresence(session, default), default).Ignore();
public virtual async Task SignOutAsync( SignOutCommand command, CancellationToken cancellationToken = default) { var(session, force) = command; var context = CommandContext.GetCurrent(); if (Computed.IsInvalidating()) { GetSessionInfoAsync(session, default).Ignore(); var invSessionInfo = context.Operation().Items.TryGet <SessionInfo>(); if (invSessionInfo != null) { TryGetUserAsync(invSessionInfo.UserId, default).Ignore(); GetUserSessionsAsync(invSessionInfo.UserId, default).Ignore(); } return; } await using var dbContext = await CreateCommandDbContextAsync(cancellationToken).ConfigureAwait(false); var dbSessionInfo = await Sessions.FindOrCreateAsync(dbContext, session, cancellationToken).ConfigureAwait(false); var sessionInfo = dbSessionInfo.ToModel(); if (sessionInfo.IsSignOutForced) { return; } context.Operation().Items.Set(sessionInfo); sessionInfo = sessionInfo with { LastSeenAt = Clock.Now, AuthenticatedIdentity = "", UserId = "", IsSignOutForced = force, }; await Sessions.CreateOrUpdateAsync(dbContext, sessionInfo, cancellationToken).ConfigureAwait(false); }
public Task SignOut([FromBody] SignOutCommand command, CancellationToken cancellationToken = default) { command.UseDefaultSession(SessionResolver); return(AuthService.SignOut(command, cancellationToken)); }
public MainWindowViewModel() { Locator.CurrentMutable.RegisterConstant(this); User = new CurrentUserViewModel(); Locator.CurrentMutable.RegisterConstant <ICurrentUser>(User); configuration = Locator.Current.GetService <IConfiguration>(); settings = configuration?.GetSection("ChatClientSettings")?.Get <ChatClientSettings>(); var mapper = Locator.Current.GetService <IMapper>(); if (settings == null) { settings = new ChatClientSettings(); } if (settings.HostUrl.IsNullOrEmpty()) { settings.HostUrl = "http://localhost:5000"; } if (settings.AttachmentDefaultPath.IsNullOrEmpty()) { settings.AttachmentDefaultPath = "\\Download"; } serviceClient = new JsonServiceClient(settings.HostUrl); ProfileViewModel = new ProfileViewModel(serviceClient); Locator.CurrentMutable.RegisterConstant <IProfile>(ProfileViewModel); ProfileViewModel.IsOpenProfileEvent += () => WindowStates(WindowState.OpenProfile); AttachmentViewModel = new SendAttachmentsViewModel(serviceClient); SettingsViewModel = new SettingsViewModel(serviceClient); SettingsViewModel.OpenSettingsActiveEvent += (e) => { WindowStates(WindowState.WindowSettings); }; SettingsViewModel.TypeEnterEvent += (e) => { KeySendMessage = e; }; SettingsViewModel.ContextMenuSettingsActiveEvent += (e) => { WindowStates(WindowState.HeaderMenuPopup); }; SettingsViewModel.SetSelectedOnSettingsItemEvent += e => { TextHeaderMenuInSettings = SettingsViewModel.SettingsMenuActiveMain ? "Сообщения и чаты" : "Аудит входа"; }; Width(false); User.UserName = settings.UserName; Tokens = new TokenResult { AccessToken = settings.AccessToken, RefreshToken = settings.RefreshToken }; Messages = new ObservableCollection <IMessagesContainerViewModel>(); var bits = Environment.Is64BitOperatingSystem ? "PC 64bit, " : "PC 32bit, "; var operatingSystem = bits + RuntimeInformation.OSDescription; string ipAddress = ""; try { ipAddress = new WebClient().DownloadString("https://api.ipify.org"); } catch (Exception e) { try { IPHostEntry ipHost = Dns.GetHostEntry("localhost"); if (ipHost.AddressList.Length > 0) { ipAddress = ipHost.AddressList.Last().ToString(); } } catch (Exception exception) { } } var nameVersionClient = "SkillChat Avalonia Client 1.0"; ConnectCommand = ReactiveCommand.CreateFromTask(async() => { try { _connection = new HubConnectionBuilder() .WithUrl(settings.HostUrl + "/ChatHub") .Build(); _hub = _connection.CreateHub <IChatHub>(); ProfileViewModel.SetChatHub(_hub); AttachmentViewModel.SetChatHub(_hub); if (Tokens == null || Tokens.AccessToken.IsNullOrEmpty()) { Tokens = await serviceClient.PostAsync(new AuthViaPassword { Login = User.UserName, Password = User.Password }); settings.AccessToken = Tokens.AccessToken; settings.RefreshToken = Tokens.RefreshToken; settings.UserName = User.UserName; configuration.GetSection("ChatClientSettings").Set(settings); } serviceClient.BearerToken = Tokens.AccessToken; this.ObservableForProperty(m => m.ExpireTime).Subscribe(change => { if (change.Value != null) { //TODO запуск обновления токена } }); _connection.Subscribe <LogOn>(async data => { if (data.Error) { IsSignedIn = false; serviceClient.BearerToken = Tokens.RefreshToken; try { Tokens = await serviceClient.PostAsync(new PostRefreshToken()); settings.AccessToken = Tokens.AccessToken; settings.RefreshToken = Tokens.RefreshToken; configuration.GetSection("ChatClientSettings").Set(configuration); await _hub.Login(Tokens.AccessToken, operatingSystem, ipAddress, nameVersionClient); } catch (Exception e) { Tokens = null; } } else { IsSignedIn = true; User.Id = data.Id; User.Login = data.UserLogin; ExpireTime = data.ExpireTime; var chats = await serviceClient.GetAsync(new GetChatsList()); var chat = chats.Chats.FirstOrDefault(); ChatId = chat?.Id; ChatName = chat?.ChatName; LoadMessageHistoryCommand.Execute(null); //Получаем настройки SettingsViewModel.ChatSettings = await serviceClient.GetAsync(new GetMySettings()); KeySendMessage = SettingsViewModel.ChatSettings.SendingMessageByEnterKey; } }); _connection.Subscribe <UpdateUserDisplayName>(async user => { try { var updateMessages = Messages.Where(s => s is UserMessagesContainerViewModel); foreach (var message in updateMessages) { foreach (var item in message.Messages.Where(s => s.UserId == user.Id)) { item.UserNickname = user.DisplayName; } } ProfileViewModel.UpdateUserProfile(user.DisplayName, user.Id); } catch (Exception e) { SignOutCommand.Execute(null); } }); _connection.Subscribe <ReceiveMessage>(async data => { var isMyMessage = User.Id == data.UserId; var hasAttachments = data.Attachments != null && data.Attachments.Count > 0; MessageViewModel newMessage; if (isMyMessage) { newMessage = hasAttachments ? new MyAttachmentViewModel() : new MyMessageViewModel(); } else { newMessage = hasAttachments ? new UserAttachmentViewModel() : new UserMessageViewModel(); } newMessage.Id = data.Id; newMessage.Text = data.Message; newMessage.PostTime = data.PostTime; newMessage.UserNickname = data.UserNickname ?? data.UserLogin; newMessage.UserId = data.UserId; newMessage.Attachments = data.Attachments? .Select(s => { var attah = mapper?.Map <AttachmentMold>(s); return(new AttachmentMessageViewModel(attah)); }).ToList(); var container = Messages.LastOrDefault(); if (isMyMessage) { if (!(container is MyMessagesContainerViewModel)) { container = new MyMessagesContainerViewModel(); Messages.Add(container); } } else { if (container is UserMessagesContainerViewModel) { var lastMessage = container.Messages.LastOrDefault(); if (lastMessage?.UserId != newMessage.UserId) { container = new UserMessagesContainerViewModel(); Messages.Add(container); } } else { container = new UserMessagesContainerViewModel(); Messages.Add(container); } if (!windowIsFocused || SettingsViewModel.IsOpened) { Notify.NewMessage(newMessage.UserNickname, newMessage.Text.Replace("\r\n", " ")); } } container.Messages.Add(newMessage); if (container.Messages.First() == newMessage) { newMessage.ShowNickname = true; } MessageReceived?.Invoke(new ReceivedMessageArgs(newMessage)); }); _connection.Closed += connectionOnClosed(); await _connection.StartAsync(); await _hub.Login(Tokens.AccessToken, operatingSystem, ipAddress, nameVersionClient); //Messages.Add("Connection started"); IsShowingLoginPage = false; IsShowingRegisterPage = false; ValidationError = ""; IsConnected = true; User.Password = ""; } catch (Exception ex) { //Изменение параеметров TextBox в случае ошибки User.Error("неверный логин или пароль"); ErrorBe?.Invoke(); IsShowingLoginPage = _connection.State != HubConnectionState.Connected ? true : false; //Messages.Add(ex.Message); } }); if (Tokens.AccessToken.IsNullOrEmpty() == false) { ConnectCommand.Execute(null); } SendCommand = ReactiveCommand.CreateFromTask(async() => { try { await _hub.SendMessage(new HubMessage(ChatId, MessageText)); MessageText = null; } catch (Exception ex) { SignOutCommand.Execute(null); } }, this.WhenAnyValue(m => m.IsConnected, m => m.MessageText, (b, m) => b == true && !string.IsNullOrEmpty(m))); LoadMessageHistoryCommand = ReactiveCommand.CreateFromTask(async() => { try { var first = Messages.FirstOrDefault()?.Messages.FirstOrDefault(); var request = new GetMessages { ChatId = ChatId, BeforePostTime = first?.PostTime }; // Логика выбора сообщений по id чата var result = await serviceClient.GetAsync(request); foreach (var item in result.Messages) { var isMyMessage = User.Id == item.UserId; var hasAttachments = item.Attachments != null && item.Attachments.Count > 0; MessageViewModel newMessage; if (isMyMessage) { newMessage = hasAttachments ? new MyAttachmentViewModel() : new MyMessageViewModel(); } else { newMessage = hasAttachments ? new UserAttachmentViewModel() : new UserMessageViewModel(); } newMessage.Id = item.Id; newMessage.Text = item.Text; newMessage.PostTime = item.PostTime; newMessage.UserNickname = item.UserNickName; newMessage.UserId = item.UserId; newMessage.Attachments = item.Attachments?.Select(s => new AttachmentMessageViewModel(s)).ToList(); var container = Messages.FirstOrDefault(); if (isMyMessage) { if (!(container is MyMessagesContainerViewModel)) { container = new MyMessagesContainerViewModel(); Messages.Insert(0, container); } } else { if (container is UserMessagesContainerViewModel) { var firstMessage = container.Messages.FirstOrDefault(); if (firstMessage?.UserId != newMessage.UserId) { container = new UserMessagesContainerViewModel(); Messages.Insert(0, container); } } else { container = new UserMessagesContainerViewModel(); Messages.Insert(0, container); } } container.Messages.Insert(0, newMessage); var firstInBlock = container.Messages.First(); foreach (var message in container.Messages) { message.ShowNickname = firstInBlock == message; } } } catch (Exception e) { } }); SignOutCommand = ReactiveCommand.CreateFromTask(async() => { try { Messages.Clear(); MessageText = null; Tokens = null; IsSignedIn = false; IsConnected = false; serviceClient.BearerToken = null; if (_connection != null) { _connection.Closed -= connectionOnClosed(); await _connection.StopAsync(); } _connection = null; _hub = null; settings.AccessToken = null; settings.RefreshToken = null; configuration.GetSection("ChatClientSettings").Set(settings); WindowStates(WindowState.SignOut); } catch (Exception ex) { } finally { IsShowingLoginPage = true; } }); IsShowingLoginPage = true; // Скрывает окно регистрации IsShowingRegisterPage = false; IsShowingLoginPage = true; GoToRegisterCommand = ReactiveCommand.Create <object>(_ => { IsShowingRegisterPage = true; IsShowingLoginPage = false; RegisterUser.Login = User.UserName; User.Password = ""; }); RegisterUser = new RegisterUserViewModel(); RegisterUser.GoToLoginCommand = ReactiveCommand.Create <object>(_ => { IsShowingRegisterPage = false; IsShowingLoginPage = true; RegisterUser.Password = ""; User.UserName = RegisterUser.Login; }); IsConnected = false; //Скрывает окно чата RegisterCommand = ReactiveCommand.CreateFromTask(async() => { var request = new RegisterNewUser(); try { ValidationError = ""; if (string.IsNullOrWhiteSpace(RegisterUser.Login) || string.IsNullOrWhiteSpace(RegisterUser.Password)) { throw new Exception("Не заполнены логин и/или пароль"); } request.Login = RegisterUser.Login; request.Password = RegisterUser.Password; request.UserName = RegisterUser.UserName; Tokens = await serviceClient.PostAsync(request); settings.AccessToken = Tokens.AccessToken; settings.RefreshToken = Tokens.RefreshToken; settings.UserName = RegisterUser.Login; configuration.GetSection("ChatClientSettings").Set(settings); ConnectCommand.Execute(null); } catch (Exception ex) { Debug.WriteLine($"Ошибка регистрации {ex.Message}"); ValidationError = ex.Message; } }); NotifyCommand = ReactiveCommand.Create <object>(obj => { if (obj is IHaveIsActive win) { windowIsFocused = win.IsActive; } }); PointerPressedCommand = ReactiveCommand.Create <object>(obj => { ProfileViewModel.ContextMenuClose(); SettingsViewModel.CloseContextMenu(); }); ProfileViewModel.SignOutCommand = SignOutCommand; ProfileViewModel.LoadMessageHistoryCommand = LoadMessageHistoryCommand; }
public Task SignOut([FromBody] SignOutCommand command, CancellationToken cancellationToken = default) => Auth.SignOut(command.UseDefaultSession(SessionResolver), cancellationToken);
public IActionResult SignOut([FromBody] SignOutCommand command) => ProcessCommand(command);
// IAuth public abstract Task SignOut(SignOutCommand command, CancellationToken cancellationToken = default);
public async Task LongFlowTest() { var authServer = Services.GetRequiredService <IServerSideAuthService>(); var sessionFactory = ClientServices.GetRequiredService <ISessionFactory>(); var sessionA = sessionFactory.CreateSession(); var sessionB = sessionFactory.CreateSession(); var sessions = await authServer.GetUserSessions(sessionA); sessions.Length.Should().Be(0); sessions = await authServer.GetUserSessions(sessionB); sessions.Length.Should().Be(0); var bob = new User("", "Bob").WithIdentity("g:1"); var signInCmd = new SignInCommand(sessionA, bob).MarkServerSide(); await authServer.SignIn(signInCmd); var user = await authServer.GetUser(sessionA); user.Name.Should().Be(bob.Name); bob = await authServer.TryGetUser(user.Id) ?? throw new NullReferenceException(); sessions = await authServer.GetUserSessions(sessionA); sessions.Select(s => s.Id).Should().BeEquivalentTo(new[] { sessionA.Id }); sessions = await authServer.GetUserSessions(sessionB); sessions.Length.Should().Be(0); signInCmd = new SignInCommand(sessionB, bob).MarkServerSide(); await authServer.SignIn(signInCmd); user = await authServer.GetUser(sessionB); user.Name.Should().Be(bob.Name); sessions = await authServer.GetUserSessions(sessionA); sessions.Select(s => s.Id).Should().BeEquivalentTo(new[] { sessionA.Id, sessionB.Id }); sessions = await authServer.GetUserSessions(sessionB); sessions.Select(s => s.Id).Should().BeEquivalentTo(new[] { sessionA.Id, sessionB.Id }); var signOutCmd = new SignOutCommand(sessionA); await authServer.SignOut(signOutCmd); (await authServer.IsSignOutForced(sessionB)).Should().BeFalse(); user = await authServer.GetUser(sessionA); user.IsAuthenticated.Should().BeFalse(); sessions = await authServer.GetUserSessions(sessionA); sessions.Length.Should().Be(0); sessions = await authServer.GetUserSessions(sessionB); sessions.Select(s => s.Id).Should().BeEquivalentTo(new[] { sessionB.Id }); signInCmd = new SignInCommand(sessionA, bob).MarkServerSide(); await authServer.SignIn(signInCmd); user = await authServer.GetUser(sessionA); user.Name.Should().Be(bob.Name); sessions = await authServer.GetUserSessions(sessionA); sessions.Select(s => s.Id).Should().BeEquivalentTo(new[] { sessionA.Id, sessionB.Id }); sessions = await authServer.GetUserSessions(sessionB); sessions.Select(s => s.Id).Should().BeEquivalentTo(new[] { sessionA.Id, sessionB.Id }); signOutCmd = new SignOutCommand(sessionB, true); await authServer.SignOut(signOutCmd); (await authServer.IsSignOutForced(sessionB)).Should().BeTrue(); (await authServer.GetSessionInfo(sessionB)).IsSignOutForced.Should().BeTrue(); user = await authServer.GetUser(sessionB); user.IsAuthenticated.Should().BeFalse(); sessions = await authServer.GetUserSessions(sessionA); sessions.Select(s => s.Id).Should().BeEquivalentTo(new[] { sessionA.Id }); sessions = await authServer.GetUserSessions(sessionB); sessions.Length.Should().Be(0); await Assert.ThrowsAsync <SecurityException>(async() => { var sessionInfo = await authServer.GetSessionInfo(sessionB); var setupSessionCmd = new SetupSessionCommand(sessionB).MarkServerSide(); await authServer.SetupSession(setupSessionCmd); }); await Assert.ThrowsAsync <SecurityException>(async() => { signInCmd = new SignInCommand(sessionB, bob).MarkServerSide(); await authServer.SignIn(signInCmd); }); }
public async Task <IActionResult> Post([FromBody] SignOutCommand command) { return(await HandleRequestWithToken(command)); }
new(new TransientOperation() { Command = new SignOutCommand() });
public async Task <IActionResult> SignOut(SignOutCommand request) { await _mediator.Send(request); return(Ok()); }
public IActionResult SignOut([FromBody] SignOutCommand signOutCommand) { return(Ok(_signInService.SignOut(signOutCommand))); }
public async Task <IActionResult> SignOut(SignOutCommand command) { return(Ok(await Mediator.Send(command))); }