2020-12-02 20:48:03 +00:00
/ * *
* Seed Function
* ( sails . config . bootstrap )
*
* A function that runs just before your Sails app gets lifted .
* > Need more flexibility ? You can also create a hook .
*
* For more information on seeding your app with fake data , check out :
* https : //sailsjs.com/config/bootstrap
* /
module . exports . bootstrap = async function ( ) {
// Import dependencies
var path = require ( 'path' ) ;
// This bootstrap version indicates what version of fake data we're dealing with here.
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 d5a1280759266f6bf587c9bab275d1a3e69ec16a.
* 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 6297c33892231d0ef98bed4cbb127f4263ebc48d.
* Revert "Revert "Provision Fleet sandbox for users logging in""
This reverts commit c2a2567b68325ea92e19f908226de2f52d8265f9.
* Revert "Revert "Revert "Provision Fleet sandbox for users logging in"""
This reverts commit acc178ea76ece637f7f6eab9f44ee51c44f59a00.
* 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 22:31:01 +00:00
var HARD _CODED _DATA _VERSION = 1 ;
2020-12-02 20:48:03 +00:00
// This path indicates where to store/look for the JSON file that tracks the "last run bootstrap info"
// locally on this development computer (if we happen to be on a development computer).
var bootstrapLastRunInfoPath = path . resolve ( sails . config . appPath , '.tmp/bootstrap-version.json' ) ;
// Whether or not to continue doing the stuff in this file (i.e. wiping and regenerating data)
// depends on some factors:
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// If the hard-coded data version has been incremented, or we're being forced
// (i.e. `--drop` or `--environment=test` was set), then run the meat of this
// bootstrap script to wipe all existing data and rebuild hard-coded data.
if ( sails . config . models . migrate !== 'drop' && sails . config . environment !== 'test' ) {
// If this is _actually_ a production environment (real or simulated), or we have
// `migrate: safe` enabled, then prevent accidentally removing all data!
if ( process . env . NODE _ENV === 'production' || sails . config . models . migrate === 'safe' ) {
sails . log ( 'Since we are running with migrate: \'safe\' and/or NODE_ENV=production (in the "' + sails . config . environment + '" Sails environment, to be precise), skipping the rest of the bootstrap to avoid data loss...' ) ;
return ;
} //•
// Compare bootstrap version from code base to the version that was last run
var lastRunBootstrapInfo = await sails . helpers . fs . readJson ( bootstrapLastRunInfoPath )
. tolerate ( 'doesNotExist' ) ; // (it's ok if the file doesn't exist yet-- just keep going.)
if ( lastRunBootstrapInfo && lastRunBootstrapInfo . lastRunVersion === HARD _CODED _DATA _VERSION ) {
sails . log ( 'Skipping v' + HARD _CODED _DATA _VERSION + ' bootstrap script... (because it\'s already been run)' ) ;
sails . log ( '(last run on this computer: @ ' + ( new Date ( lastRunBootstrapInfo . lastRunAt ) ) + ')' ) ;
return ;
} //•
sails . log ( 'Running v' + HARD _CODED _DATA _VERSION + ' bootstrap script... (' + ( lastRunBootstrapInfo ? 'before this, the last time the bootstrap ran on this computer was for v' + lastRunBootstrapInfo . lastRunVersion + ' @ ' + ( new Date ( lastRunBootstrapInfo . lastRunAt ) ) : 'looks like this is the first time the bootstrap has run on this computer' ) + ')' ) ;
}
else {
sails . log ( 'Running bootstrap script because it was forced... (either `--drop` or `--environment=test` was used)' ) ;
}
// Since the hard-coded data version has been incremented, and we're running in
// a "throwaway data" environment, delete all records from all models.
for ( let identity in sails . models ) {
await sails . models [ identity ] . destroy ( { } ) ;
} //∞
// By convention, this is a good place to set up fake data during development.
Add customer portal and license dispenser to fleetdm.com (#3546)
* Add images for customer portal, dashboard, and email templates
* updated email layout and reset password template, new email template
* update ajax-button component to have an optional spinner
* updated cloud-error & stripe-card-element component styles
* updates to user model, add quote and subscription
* Login, signup, forgot password, update profile
* link to customer portal from pricing
* new-license page, bootstrap updates
* create quote action, dashboard page, update routes
* Add new page styles to importer, update component styles
* updates to js-timestamp
* update modal styles and layout
* using @submitted on ajax form, controller updates
* Update create-quote.js
* updates to quote model, action updates, truncate license key on dashboard
* update email layout, subscribe action, user model
* Update importer.less
* style updates, order confirmation
* use correct font
* style updates
* create license key
* new-license page changes
* signup page changes
* add billing format to js-timestamp component, dashboard updates, change password
* swap get started link for customers
* order -> subscription
* Update login.ejs
* Lint fixes, page updates, mobile styles
* remove edit-profile route, update layout, bootstrap, forms
* change customer-layout name to match other layout names, update copyright year in layouts
* changes requested from code review and #3570
* submit button width, contact font-size
* Update dashboard.less
* Update bootstrap-overrides.less
* slack logo update, login text
2022-01-05 02:02:42 +00:00
let adminUser = await User . create ( {
emailAddress : '[email protected] ' ,
firstName : 'Ryan' ,
lastName : 'Dahl' ,
organization : 'Golaith Industries' ,
isSuperAdmin : true ,
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 d5a1280759266f6bf587c9bab275d1a3e69ec16a.
* 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 6297c33892231d0ef98bed4cbb127f4263ebc48d.
* Revert "Revert "Provision Fleet sandbox for users logging in""
This reverts commit c2a2567b68325ea92e19f908226de2f52d8265f9.
* Revert "Revert "Revert "Provision Fleet sandbox for users logging in"""
This reverts commit acc178ea76ece637f7f6eab9f44ee51c44f59a00.
* 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 22:31:01 +00:00
fleetSandboxURL : 'http://example.com' ,
fleetSandboxExpiresAt : 1 ,
fleetSandboxDemoKey : await sails . helpers . strings . uuid ( ) ,
Add customer portal and license dispenser to fleetdm.com (#3546)
* Add images for customer portal, dashboard, and email templates
* updated email layout and reset password template, new email template
* update ajax-button component to have an optional spinner
* updated cloud-error & stripe-card-element component styles
* updates to user model, add quote and subscription
* Login, signup, forgot password, update profile
* link to customer portal from pricing
* new-license page, bootstrap updates
* create quote action, dashboard page, update routes
* Add new page styles to importer, update component styles
* updates to js-timestamp
* update modal styles and layout
* using @submitted on ajax form, controller updates
* Update create-quote.js
* updates to quote model, action updates, truncate license key on dashboard
* update email layout, subscribe action, user model
* Update importer.less
* style updates, order confirmation
* use correct font
* style updates
* create license key
* new-license page changes
* signup page changes
* add billing format to js-timestamp component, dashboard updates, change password
* swap get started link for customers
* order -> subscription
* Update login.ejs
* Lint fixes, page updates, mobile styles
* remove edit-profile route, update layout, bootstrap, forms
* change customer-layout name to match other layout names, update copyright year in layouts
* changes requested from code review and #3570
* submit button width, contact font-size
* Update dashboard.less
* Update bootstrap-overrides.less
* slack logo update, login text
2022-01-05 02:02:42 +00:00
password : await sails . helpers . passwords . hashPassword ( 'abc123' )
} ) . fetch ( ) ;
2022-03-28 14:48:00 +00:00
if ( sails . config . custom . enableBillingFeatures ) {
let stripeCustomerId = await sails . helpers . stripe . saveBillingInfo . with ( {
emailAddress : adminUser . emailAddress
} ) . timeout ( 5000 ) . retry ( ) ;
await User . updateOne ( { id : adminUser . id } )
. set ( {
stripeCustomerId
} ) ;
}
Add customer portal and license dispenser to fleetdm.com (#3546)
* Add images for customer portal, dashboard, and email templates
* updated email layout and reset password template, new email template
* update ajax-button component to have an optional spinner
* updated cloud-error & stripe-card-element component styles
* updates to user model, add quote and subscription
* Login, signup, forgot password, update profile
* link to customer portal from pricing
* new-license page, bootstrap updates
* create quote action, dashboard page, update routes
* Add new page styles to importer, update component styles
* updates to js-timestamp
* update modal styles and layout
* using @submitted on ajax form, controller updates
* Update create-quote.js
* updates to quote model, action updates, truncate license key on dashboard
* update email layout, subscribe action, user model
* Update importer.less
* style updates, order confirmation
* use correct font
* style updates
* create license key
* new-license page changes
* signup page changes
* add billing format to js-timestamp component, dashboard updates, change password
* swap get started link for customers
* order -> subscription
* Update login.ejs
* Lint fixes, page updates, mobile styles
* remove edit-profile route, update layout, bootstrap, forms
* change customer-layout name to match other layout names, update copyright year in layouts
* changes requested from code review and #3570
* submit button width, contact font-size
* Update dashboard.less
* Update bootstrap-overrides.less
* slack logo update, login text
2022-01-05 02:02:42 +00:00
2020-12-02 20:48:03 +00:00
// Save new bootstrap version
await sails . helpers . fs . writeJson . with ( {
destination : bootstrapLastRunInfoPath ,
json : {
lastRunVersion : HARD _CODED _DATA _VERSION ,
lastRunAt : Date . now ( )
} ,
force : true
} )
. tolerate ( ( err ) => {
sails . log . warn ( 'For some reason, could not write bootstrap version .json file. This could be a result of a problem with your configured paths, or, if you are in production, a limitation of your hosting provider related to `pwd`. As a workaround, try updating app.js to explicitly pass in `appPath: __dirname` instead of relying on `chdir`. Current sails.config.appPath: `' + sails . config . appPath + '`. Full error details: ' + err . stack + '\n\n(Proceeding anyway this time...)' ) ;
} ) ;
} ;