mirror of
https://github.com/mattermost/mattermost-mobile.git
synced 2026-11-09 20:50:12 +00:00
* On iOS, resuming after the 5-minute window showed no biometric prompt —
just a blocking alert whose only button logged the user out. A failure to
evaluate device security was indistinguishable from a verdict that the
device is not secured. Android had the same class of bug, where
user-cancel codes led to logout.
Outcomes are now classified three ways, so only a genuine credential
rejection or a genuinely unsecured device acts destructively; cancels and
indeterminate results offer a retry. SecurityManager and ManagedApp share
the policy-free parts via app/utils/security/.
Also fixes a resume stacking a second prompt behind an open alert, a
backgroundSince bypass, and a latched flag that disabled the MDM PIN.
* feedback review
* gate app state
* fix tests
(cherry picked from commit f00701ec9a)
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
18 lines
692 B
TypeScript
18 lines
692 B
TypeScript
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
import {toMilliseconds} from '@utils/datetime';
|
|
|
|
export const PROMPT_AUTH_AFTER = toMilliseconds({minutes: 5});
|
|
|
|
export const DEVICE_SECURED_RETRY_DELAY = 350;
|
|
|
|
// Identifies the caller in log entries, which are user-exportable.
|
|
export const AuthenticationSource = {
|
|
ManagedApp: 'ManagedApp',
|
|
SecurityManager: 'SecurityManager',
|
|
} as const;
|
|
|
|
// eslint-disable-next-line @typescript-eslint/no-redeclare -- TypeScript supports same-name type/value pairs as enum alternative
|
|
export type AuthenticationSource = typeof AuthenticationSource[keyof typeof AuthenticationSource];
|