-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathlogout.js
68 lines (59 loc) · 2.32 KB
/
logout.js
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
67
68
/*
Copyright 2019 Adobe. All rights reserved.
This file is licensed to you under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. You may obtain a copy
of the License at http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under
the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
OF ANY KIND, either express or implied. See the License for the specific language
governing permissions and limitations under the License.
*/
const { Flags } = require('@oclif/core')
const ImsBaseCommand = require('../../ims-base-command')
const { invalidateToken, context } = require('@adobe/aio-lib-ims')
const { CLI } = require('@adobe/aio-lib-ims/src/context')
class LogoutCommand extends ImsBaseCommand {
async run () {
const { flags } = await this.parse(LogoutCommand)
const current = await context.getCurrent()
flags.ctx = flags.ctx || (current || CLI)
const accessToken = await context.get(`${flags.ctx}.access_token`)
if (!accessToken || !accessToken.data) {
this.log('You are already logged out.')
return
}
try {
await invalidateToken(flags.ctx, flags.force)
this.log('You have successfully logged out.')
} catch (err) {
this.debugError('Logout failure', err)
this.error(`Cannot logout context '${flags.ctx}': ${err.message || err}`, { exit: 1 })
}
}
}
LogoutCommand.description = `Log out the current or a named Adobe IMS context.
This command can be called multiple times on the same Adobe IMS context with
out causing any errors. The assumption is that after calling this command
without an error, the Adobe IMS context's access and refresh tokens have been
invalidated and removed from persistent storage. Repeatedly calling this
command will just do nothing.
`
LogoutCommand.flags = {
...ImsBaseCommand.flags,
force: Flags.boolean({
char: 'f',
default: true,
allowNo: true,
description: `Invalidate the refresh token as well as all access tokens.
Otherwise only the access token is invalidated. For Adobe IMS
contexts not supporting refresh tokens, this flag has no
effect.`
})
}
LogoutCommand.args = [
...ImsBaseCommand.args
]
LogoutCommand.aliases = [
'logout'
]
module.exports = LogoutCommand