Repository navigation
Expand file tree
/
Copy pathcli.php
More file actions
66 lines (58 loc) · 1.86 KB
/
Copy pathcli.php
File metadata and controls
66 lines (58 loc) · 1.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php
/**
* WP-CLI commands.
*
* @package rest-api-guard
*/
use function Alley\WP\REST_API_Guard\generate_jwt;
use function Alley\WP\REST_API_Guard\get_tokens;
use function Alley\WP\REST_API_Guard\revoke_token;
WP_CLI::add_command(
'rest-api-guard generate-jwt',
function ( $args, $assoc_args ) {
$expiration = isset( $assoc_args['expiration'] ) ? (int) $assoc_args['expiration'] : null;
$user = isset( $assoc_args['user'] ) ? (int) $assoc_args['user'] : null;
echo generate_jwt( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
expiration: $expiration,
user: $user,
name: (string) ( $assoc_args['name'] ?? '' ),
) . PHP_EOL;
},
[
'shortdesc' => __( 'Generate a JSON Web Token (JWT).', 'rest-api-guard' ),
'synopsis' => '[--expiration=<expiration>] [--user=<user>] [--name=<name>]',
],
);
WP_CLI::add_command(
'rest-api-guard list-jwts',
function ( $args, $assoc_args ) {
$items = [];
foreach ( get_tokens() as $jti => $token ) {
$items[] = [
'id' => $jti,
'name' => $token['name'],
'user' => $token['user_id'] ?? '',
'issued' => gmdate( 'Y-m-d H:i:s', $token['issued_at'] ),
'expires' => null !== $token['expires_at'] ? gmdate( 'Y-m-d H:i:s', $token['expires_at'] ) : '',
];
}
WP_CLI\Utils\format_items( $assoc_args['format'] ?? 'table', $items, [ 'id', 'name', 'user', 'issued', 'expires' ] );
},
[
'shortdesc' => __( 'List issued JSON Web Tokens (JWTs).', 'rest-api-guard' ),
'synopsis' => '[--format=<format>]',
],
);
WP_CLI::add_command(
'rest-api-guard revoke-jwt',
function ( $args ) {
if ( ! revoke_token( $args[0] ) ) {
WP_CLI::error( __( 'Token not found.', 'rest-api-guard' ) );
}
WP_CLI::success( __( 'Token revoked.', 'rest-api-guard' ) );
},
[
'shortdesc' => __( 'Revoke a JSON Web Token (JWT) by its ID.', 'rest-api-guard' ),
'synopsis' => '<id>',
],
);