Ejemplo n.º 1
0
        public async Task CheckVaultTimeoutAsync()
        {
            if (_platformUtilsService.IsViewOpen())
            {
                return;
            }
            var authed = await _userService.IsAuthenticatedAsync();

            if (!authed)
            {
                return;
            }
            if (await IsLockedAsync())
            {
                return;
            }
            // This only returns null
            var vaultTimeoutMinutes = _platformUtilsService.LockTimeout();

            if (vaultTimeoutMinutes == null)
            {
                vaultTimeoutMinutes = await _storageService.GetAsync <int?>(Constants.VaultTimeoutKey);
            }
            if (vaultTimeoutMinutes.GetValueOrDefault(-1) < 0)
            {
                return;
            }
            var lastActiveTime = await _storageService.GetAsync <long?>(Constants.LastActiveTimeKey);

            if (lastActiveTime == null)
            {
                return;
            }
            var diffMs         = _platformUtilsService.GetActiveTime() - lastActiveTime;
            var vaultTimeoutMs = vaultTimeoutMinutes * 60000;

            if (diffMs >= vaultTimeoutMs)
            {
                // Pivot based on saved action
                var action = await _storageService.GetAsync <string>(Constants.VaultTimeoutActionKey);

                if (action == "logOut")
                {
                    await LogOutAsync();
                }
                else
                {
                    await LockAsync(true);
                }
            }
        }
Ejemplo n.º 2
0
        public async Task CheckVaultTimeoutAsync()
        {
            if (_platformUtilsService.IsViewOpen())
            {
                return;
            }
            var authed = await _userService.IsAuthenticatedAsync();

            if (!authed)
            {
                return;
            }
            if (await IsLockedAsync())
            {
                return;
            }
            var vaultTimeoutMinutes = await GetVaultTimeout();

            if (vaultTimeoutMinutes < 0 || vaultTimeoutMinutes == null)
            {
                return;
            }
            if (vaultTimeoutMinutes == 0 && !DelayLockAndLogoutMs.HasValue)
            {
                await LockOrLogout();
            }
            var lastActiveTime = await _storageService.GetAsync <long?>(Constants.LastActiveTimeKey);

            if (lastActiveTime == null)
            {
                return;
            }
            var diffMs = _platformUtilsService.GetActiveTime() - lastActiveTime;

            if (DelayLockAndLogoutMs.HasValue && diffMs < DelayLockAndLogoutMs)
            {
                return;
            }
            var vaultTimeoutMs = vaultTimeoutMinutes * 60000;

            if (diffMs >= vaultTimeoutMs)
            {
                await LockOrLogout();
            }
        }
Ejemplo n.º 3
0
        public async Task <bool> ShouldTimeoutAsync(string userId = null)
        {
            var authed = await _stateService.IsAuthenticatedAsync(userId);

            if (!authed)
            {
                return(false);
            }
            var vaultTimeoutAction = await _stateService.GetVaultTimeoutActionAsync(userId);

            if (vaultTimeoutAction == VaultTimeoutAction.Lock && await IsLockedAsync(userId))
            {
                return(false);
            }
            var vaultTimeoutMinutes = await GetVaultTimeout(userId);

            if (vaultTimeoutMinutes < 0 || vaultTimeoutMinutes == null)
            {
                return(false);
            }
            if (vaultTimeoutMinutes == 0 && !DelayLockAndLogoutMs.HasValue)
            {
                return(true);
            }
            var lastActiveTime = await _stateService.GetLastActiveTimeAsync(userId);

            if (lastActiveTime == null)
            {
                return(false);
            }
            var diffMs = _platformUtilsService.GetActiveTime() - lastActiveTime;

            if (DelayLockAndLogoutMs.HasValue && diffMs < DelayLockAndLogoutMs)
            {
                return(false);
            }
            var vaultTimeoutMs = vaultTimeoutMinutes * 60000;

            return(diffMs >= vaultTimeoutMs);
        }