public TokenChangeManager(AuthenticationContext authContext, ILoginInfoStorage storage) { domain0AuthenticationContext = authContext; loginInfoStorage = storage; if (domain0AuthenticationContext.AutoRefreshEnabled) { refreshTokenTimer = new RefreshTokenTimer(authContext); } }
public AuthenticationContext( IDomain0ClientScope domain0ClientEnvironment = null, ILoginInfoStorage externalStorage = null, uint reserveTimeToUpdateToken = 120, bool enableAutoRefreshTimer = false) { ReserveTimeToUpdate = reserveTimeToUpdateToken; AutoRefreshEnabled = enableAutoRefreshTimer; Domain0Scope = domain0ClientEnvironment ?? new Domain0ClientScope(); var loginInfoStorage = externalStorage ?? new LoginInfoStorage(); tokenChangeManager = new TokenChangeManager(this, loginInfoStorage); tokenChangeManager.RestoreLoginInfo(); Client = new ProxyGenerator() .CreateInterfaceProxyWithTargetInterface( Domain0Scope.Client, new RefreshTokenInterceptor(this, Domain0Scope)); }
public LoginViewModel(IMessageBus bus, ILoginInfoStorage storage) { _bus = bus; _isTokenValid = this.ObservableToProperty( this.ObservableForProperty(vm => vm.Token).Select(t => !String.IsNullOrEmpty(t.Value)), vm => vm.IsTokenValid); LoginCommand = new ReactiveCommand( this.WhenAny( vm => vm.IsAccountNameVerified, vm => vm.IsTokenValid, (verified, token) => verified.Value && token.Value )); _bus.RegisterSourceAndHandleReply <RequestLoginMessage, RequestLoginResponse>( LoginCommand.Select(_ => new RequestLoginMessage(new LoginInfo(Account, Token))) .Do(_ => IsLoggingIn = true) .Do(_ => IsTokenInError = false), res => { IsLoggingIn = false; if (res.SuccessFul) { storage.PersistLoginInfo(new LoginInfo(Account, Token)); IsTokenInError = false; _bus.SendMessage(new ActivateMainModuleMessage(ModuleNames.MainCampfireView)); } else { IsTokenInError = true; } }); RetryCommand = new ReactiveCommand(); _bus.RegisterSourceAndHandleReply <RequestCheckAccountName, RequestCheckAccountNameReply>( this.ObservableForProperty(vm => vm.Account) .DistinctUntilChanged() .Select(_ => Unit.Default) .Throttle(TimeSpan.FromSeconds(1), RxApp.TaskpoolScheduler) .Merge(RetryCommand.Select(_ => Unit.Default)) .Do(_ => { IsAccountNameVerified = false; IsAccountNameInError = String.IsNullOrEmpty(Account); ShowConnectionError = false; }) .Where(_ => !String.IsNullOrEmpty(Account)) .Select(_ => new RequestCheckAccountName(Account)) .Do(_ => IsVerifyingAccountInProgress = true) .Do(msg => _accountNameCorrelationId = msg.CorrelationId), rep => { IsVerifyingAccountInProgress = false; IsAccountNameVerified = rep.Result; IsAccountNameInError = !rep.Result; }, ex => { IsVerifyingAccountInProgress = false; IsAccountNameVerified = false; IsAccountNameInError = true; ShowConnectionError = true; ConnectionErrorMessage = ex.Message; }); ProxySettingsCommand = new ReactiveCommand(); _bus.RegisterMessageSource(ProxySettingsCommand.Select(_ => new NavigateSettingsPageMessage(SettingsPageNames.Network))); LoginInfo info = storage.GetStoredLoginInfo(); if (info != null) { Token = info.Token; Account = info.Account; } }
public LoginViewModel(IMessageBus bus, ILoginInfoStorage storage) { _bus = bus; _isTokenValid = this.ObservableToProperty( this.ObservableForProperty(vm => vm.Token).Select(t => !String.IsNullOrEmpty(t.Value)), vm => vm.IsTokenValid); LoginCommand = new ReactiveCommand( this.WhenAny( vm => vm.IsAccountNameVerified, vm => vm.IsTokenValid, (verified, token) => verified.Value && token.Value )); _bus.RegisterSourceAndHandleReply<RequestLoginMessage, RequestLoginResponse>( LoginCommand.Select(_ => new RequestLoginMessage(new LoginInfo(Account, Token))) .Do(_ => IsLoggingIn = true) .Do(_ => IsTokenInError = false), res => { IsLoggingIn = false; if (res.SuccessFul) { storage.PersistLoginInfo(new LoginInfo(Account, Token)); IsTokenInError = false; _bus.SendMessage(new ActivateMainModuleMessage(ModuleNames.MainCampfireView)); } else { IsTokenInError = true; } }); RetryCommand = new ReactiveCommand(); _bus.RegisterSourceAndHandleReply<RequestCheckAccountName, RequestCheckAccountNameReply>( this.ObservableForProperty(vm => vm.Account) .DistinctUntilChanged() .Select(_ => Unit.Default) .Throttle(TimeSpan.FromSeconds(1), RxApp.TaskpoolScheduler) .Merge(RetryCommand.Select(_ => Unit.Default)) .Do(_ => { IsAccountNameVerified = false; IsAccountNameInError = String.IsNullOrEmpty(Account); ShowConnectionError = false; }) .Where(_ => !String.IsNullOrEmpty(Account)) .Select(_ => new RequestCheckAccountName(Account)) .Do(_ => IsVerifyingAccountInProgress = true) .Do(msg => _accountNameCorrelationId = msg.CorrelationId), rep => { IsVerifyingAccountInProgress = false; IsAccountNameVerified = rep.Result; IsAccountNameInError = !rep.Result; }, ex => { IsVerifyingAccountInProgress = false; IsAccountNameVerified = false; IsAccountNameInError = true; ShowConnectionError = true; ConnectionErrorMessage = ex.Message; }); ProxySettingsCommand = new ReactiveCommand(); _bus.RegisterMessageSource(ProxySettingsCommand.Select(_ => new NavigateSettingsPageMessage(SettingsPageNames.Network))); LoginInfo info = storage.GetStoredLoginInfo(); if (info != null) { Token = info.Token; Account = info.Account; } }