$def ) { if ( ( $def[1] ?? '' ) !== 'critical' ) { $out[] = $slug; } } return $out; } public static function set_allowed_scopes( array $scopes ): void { $scopes = array_values( array_unique( array_intersect( array_map( 'strval', $scopes ), AICOM_Auth::scope_slugs() ) ) ); update_option( self::OPT_ALLOWED, $scopes, false ); } /** * Check the scopes a token asks for. * * @return array{ok:bool,unknown:string[],excess:string[]} */ public static function check_scopes( array $requested ): array { $requested = array_values( array_unique( array_map( 'strval', $requested ) ) ); $unknown = array_values( array_diff( $requested, AICOM_Auth::scope_slugs() ) ); $excess = array_values( array_diff( array_diff( $requested, $unknown ), self::allowed_scopes() ) ); return [ 'ok' => ! $unknown && ! $excess, 'unknown' => $unknown, 'excess' => $excess ]; } }