fleet/website/api/controllers/account/logout.js
Eric 7974bdfa80
Website: Fleet Sandbox (#6380)
* create pages, add routes, update policies

* add new pages to importer

* sandbox page

* login -> sandbox-login

* Update login.less

* psuedo-code/code comments

* remove sandbox page

* Revert "remove sandbox page"

This reverts commit d5a1280759.

* view action drafts

* delete forgot-password page

* two new actions + draft code

* change action name

* Draft view actions and page scripts

* Update signup.js

* update comments

* update signup & sandbox-login page script

* update helper comments

* update helper usage in comments

* view-sandbox » view-sandbox-or-redirect

* Update helpers, actions, and routes

* login » sandbox-login

* update attributes on user model

* update signup action

* update page scripts and importer

* Update view-register.js

* html + css

* update signup and view-sandbox-or-redirect

* Password reset

Update user's sandbox password when they have a sandbox instance

* add new-sandbox, update sandbox page

- `/try-fleet/new-sandbox` added for users who don't have an existing Fleet Sandbox instance,
- `/sandbox` updated to redirect users to the `/demologin` endpoint of their Fleet Sandbox instance if it is still valid, or display the sandbox expired state
-  updated policies & routes

* layout and importer updates

* update sandbox-login links & page script

* update signup action

* change logout redirect location to homepage

* lint fixes

* lint fixes

* Update sandbox & sandbox-expired

* Comment updates

* update password requirements for existing pages

* remove /get-started route

* lint fixes

* replace env variable with url

* remove `required: false` from organization attribute on user model

* send redirectToSandbox from view instead of routes

* changes sandbox page name

* add 10 second timeout to /healthz check, add authorization header to cloud provisioner request

* update environment variable name

* update authorization header

* remove /new-sandbox

* update unauthorized response to redirect to correct login screen

* update comments

* update layout

* replace new-sandbox redirects with consistency violation errors

* Provision Fleet sandbox for users logging in

* Revert "Provision Fleet sandbox for users logging in"

This reverts commit 6297c33892.

* Revert "Revert "Provision Fleet sandbox for users logging in""

This reverts commit c2a2567b68.

* Revert "Revert "Revert "Provision Fleet sandbox for users logging in"""

This reverts commit acc178ea76.

* update sandbox-login mobile styles

* update sandbox-expired page to match latest wireframes

* remove required: false and planned changes comments, update signup errors and behavior

* update error

* lint fix on updated error

* Update error's indentation

* remove added forgot-password flow, add redirect for sandbox users changing their password

* Use fleetSandboxDemoKey to login to Fleet Sandbox, remove password changing flow

* update bootstrap to give admin user an expired sandbox

* Update signup.js

* remove unused exits, revert password recovery email changes

* required:false is implied if unspecified, so can be omitted

* Remove defaultsTo: '', since it is not needed

This applies the changes discussed in https://github.com/fleetdm/fleet/pull/6380#discussion_r929538495

It also makes two other trivial changes.

* Eliminate another unnecessary require:false

I think this one is actually baked into the sails-generate template.

* remove custom password validation

* update page name (sandbox-teleporter) and view action name

* revert minor changes to existing files

* update sandbox login friendlyName

* Update unauthorized response to redirect to /login

* Delete new-sandbox.less

* update layouts and importer

* add /fleetctl-preview route for old get-started page, update sandbox route

* update signup action with changes from review, add retry() to cloud provisioner request

* Update routes.js

* add missing comma to route

* update layout, fix typo in signup

* Update sandbox-expired.ejs

* lint fixes

* Update download-sitemap.js

* small whitespace changes, regenerate cloud-sdk

* remove placeholder text in password inputs

* add loading spinner to sandbox teleporter

* add logout button to header nav

* hide header on sandbox-teleporter

* update errors, check if a user already exists before cloud provisioner request

* Update sandbox-teleporter.page.js

* Update sandbox-teleporter.page.js

* Update signup.js

* resize loading spinner, history.pushState() » history.replaceState()

* send users who reset their password back to the fleetdm.com homepage

* Add Zapier webhook request for sandbox signups

* rebuild-scloud-sdk after resolving merge conflict

* update zapier request error

* Add comment w/ context about how Zapier responds with a 2xx even if there was a problem

* Update links to /get-started to go to /try-fleet/register, change /get-started redirect

* Revert changes to links

* add /test-fleet-sandbox redirect, revert /try-fleet redirect

* send logged out users to the sandbox login page when they go to /try-fleet/sandbox

Co-authored-by: Mike McNeil <[email protected]>
2022-08-12 17:31:01 -05:00

50 lines
1.3 KiB
JavaScript
Vendored

module.exports = {
friendlyName: 'Logout',
description: 'Log out of this app.',
extendedDescription:
`This action deletes the \`req.session.userId\` key from the session of the requesting user agent.
Actual garbage collection of session data depends on this app's session store, and
potentially also on the [TTL configuration](https://sailsjs.com/docs/reference/configuration/sails-config-session)
you provided for it.
Note that this action does not check to see whether or not the requesting user was
actually logged in. (If they weren't, then this action is just a no-op.)`,
exits: {
success: {
description: 'The requesting user agent has been successfully logged out.'
},
redirect: {
description: 'The requesting user agent looks to be a web browser.',
extendedDescription: 'After logging out from a web browser, the user is redirected away.',
responseType: 'redirect'
}
},
fn: async function () {
// Clear the `userId` property from this session.
delete this.req.session.userId;
// Then finish up, sending an appropriate response.
// > Under the covers, this persists the now-logged-out session back
// > to the underlying session store.
if (!this.req.wantsJSON) {
throw {redirect: '/'};
}
}
};