Initial project structure with sails.js
This commit is contained in:
11
views/pages/entrance/confirmed-email.ejs
Normal file
11
views/pages/entrance/confirmed-email.ejs
Normal file
@@ -0,0 +1,11 @@
|
||||
<div id="confirmed-email" v-cloak>
|
||||
<div class="container-fluid pt-5 pb-5">
|
||||
<h1 class="text-center">Email confirmed</h1>
|
||||
<div style="max-width: 450px;" class="mx-auto text-center">
|
||||
<hr/>
|
||||
<p>Congratulations, your account is now verified! You now have full access to your account.</p>
|
||||
<p><a class="btn btn-outline-info" href="/">To my dashboard</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<%- /* Expose locals as `window.SAILS_LOCALS` :: */ exposeLocalsToBrowser() %>
|
27
views/pages/entrance/forgot-password.ejs
Normal file
27
views/pages/entrance/forgot-password.ejs
Normal file
@@ -0,0 +1,27 @@
|
||||
<div id="forgot-password" v-cloak>
|
||||
<div class="container-fluid pt-5 pb-5">
|
||||
<h1 class="text-center">Recover password</h1>
|
||||
<div style="max-width: 450px;" class="mx-auto" v-if="!cloudSuccess">
|
||||
<p class="text-center">Enter your email address below to reset the password for your account.</p>
|
||||
<hr/>
|
||||
<ajax-form action="sendPasswordRecoveryEmail" :syncing.sync="syncing" :cloud-error.sync="cloudError" :form-data="formData" :form-rules="formRules" :form-errors.sync="formErrors" @submitted="submittedForm()">
|
||||
<div class="form-group">
|
||||
<input type="email" name="email-address" class="form-control" placeholder="sturgeon@example.com" :class="[formErrors.emailAddress ? 'is-invalid' : '']" v-model.trim="formData.emailAddress" autocomplete="email" focus-first>
|
||||
<div class="invalid-feedback" v-if="formErrors.emailAddress">Please enter a valid email address.</div>
|
||||
</div>
|
||||
<cloud-error v-if="cloudError"></cloud-error>
|
||||
<div class="form-group">
|
||||
<ajax-button type="submit" :syncing="syncing" class="btn btn-dark btn-lg btn-block">Send reset link</ajax-button>
|
||||
</div>
|
||||
</ajax-form>
|
||||
<p class="text-center"><a href="/login">Back to login</a></p>
|
||||
</div>
|
||||
<div style="max-width: 450px;" class="mx-auto text-center" v-else>
|
||||
<p>We've sent you a link to update your password.</p>
|
||||
<hr/>
|
||||
<p>If the email doesn’t arrive after a few minutes, try checking your spam folder. If you still can’t find it, please try again, or <a href="/contact">contact support</a>.</p>
|
||||
<p class="text-center"><a class="btn btn-outline-primary" href="/login">Back to login</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<%- /* Expose locals as `window.SAILS_LOCALS` :: */ exposeLocalsToBrowser() %>
|
29
views/pages/entrance/login.ejs
Normal file
29
views/pages/entrance/login.ejs
Normal file
@@ -0,0 +1,29 @@
|
||||
<div id="login" v-cloak>
|
||||
<div class="container-fluid pt-5 pb-5">
|
||||
<h1 class="text-center">Sign in to your account</h1>
|
||||
<div style="max-width: 450px;" class="mx-auto">
|
||||
<hr/>
|
||||
<ajax-form action="login" :syncing.sync="syncing" :cloud-error.sync="cloudError" :form-data="formData" :form-rules="formRules" :form-errors.sync="formErrors" @submitted="submittedForm()">
|
||||
<div class="form-group">
|
||||
<input type="email" class="form-control" placeholder="Email address" :class="[formErrors.emailAddress ? 'is-invalid' : '']" v-model.trim="formData.emailAddress" autocomplete="email" focus-first>
|
||||
<div class="invalid-feedback" v-if="formErrors.emailAddress">Please provide a valid email address.</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input type="password" class="form-control" placeholder="Password" :class="[formErrors.password ? 'is-invalid' : '']" v-model.trim="formData.password" autocomplete="current-password">
|
||||
<div class="invalid-feedback" v-if="formErrors.password">Please enter your password.</div>
|
||||
</div>
|
||||
<div class="form-group form-check">
|
||||
<input class="form-check-input" type="checkbox" id="remember" name="rememberMe" v-model="formData.rememberMe"/>
|
||||
<label class="form-check-label" for="remember">Remember me</label>
|
||||
</div>
|
||||
<cloud-error v-if="cloudError==='badCombo'">The credentials you entered are not associated with an account. Please check your email and/or password and try again.</cloud-error>
|
||||
<cloud-error v-else-if="cloudError"></cloud-error>
|
||||
<div class="form-group">
|
||||
<ajax-button :syncing="syncing" class="btn-dark btn-lg btn-block">Sign in</ajax-button>
|
||||
</div>
|
||||
</ajax-form>
|
||||
<p class="text-center"><a href="/password/forgot">Forgot your password?</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<%- /* Expose locals as `window.SAILS_LOCALS` :: */ exposeLocalsToBrowser() %>
|
26
views/pages/entrance/new-password.ejs
Normal file
26
views/pages/entrance/new-password.ejs
Normal file
@@ -0,0 +1,26 @@
|
||||
<div id="new-password" v-cloak>
|
||||
<div class="container-fluid pt-5 pb-5">
|
||||
<h1 class="text-center">Reset password</h1>
|
||||
<div style="max-width: 450px" class="mx-auto">
|
||||
<hr/>
|
||||
<ajax-form action="updatePasswordAndLogin" :syncing.sync="syncing" :cloud-error.sync="cloudError" :form-data="formData" :form-rules="formRules" :form-errors.sync="formErrors" @submitted="submittedForm()">
|
||||
<div class="form-group">
|
||||
<label for="password">New password</label>
|
||||
<input class="form-control" id="password" name="password" type="password" :class="[formErrors.password ? 'is-invalid' : '']" v-model.trim="formData.password" placeholder="••••••••" autocomplete="new-password" focus-first>
|
||||
<div class="invalid-feedback" v-if="formErrors.password">Please enter a password.</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="confirm-password">Confirm password</label>
|
||||
<input class="form-control" id="confirm-password" name="confirm-password" type="password" :class="[formErrors.confirmPassword ? 'is-invalid' : '']" v-model.trim="formData.confirmPassword" placeholder="••••••••" autocomplete="new-password">
|
||||
<div class="invalid-feedback" v-if="formErrors.confirmPassword">Your new password and confirmation do not match.</div>
|
||||
</div>
|
||||
<cloud-error v-if="cloudError"></cloud-error>
|
||||
<div class="form-group">
|
||||
<ajax-button type="submit" :syncing="syncing" class="btn btn-dark btn-lg btn-block">Submit</ajax-button>
|
||||
</div>
|
||||
</ajax-form>
|
||||
<p class="text-center">Remember your password? <a href="/login">Login</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<%- /* Expose locals as `window.SAILS_LOCALS` :: */ exposeLocalsToBrowser() %>
|
51
views/pages/entrance/signup.ejs
Normal file
51
views/pages/entrance/signup.ejs
Normal file
@@ -0,0 +1,51 @@
|
||||
<div id="signup" v-cloak>
|
||||
<div class="container-fluid pt-5 pb-5" v-if="!cloudSuccess">
|
||||
<h1 class="text-center">Create an account</h1>
|
||||
<div style="max-width: 450px;" class="mx-auto" >
|
||||
<p class="text-center">Let's get started! Becoming a member is free and only takes a few minutes.</p>
|
||||
<hr/>
|
||||
<ajax-form action="signup" :syncing.sync="syncing" :cloud-error.sync="cloudError" :form-errors.sync="formErrors" :form-data="formData" :form-rules="formRules" @submitted="submittedForm()">
|
||||
<div class="form-group">
|
||||
<label for="full-name">Full name</label>
|
||||
<input class="form-control" id="full-name" type="text" :class="[formErrors.fullName ? 'is-invalid' : '']" v-model.trim="formData.fullName" placeholder="Sturgis P. Sturgeon" autocomplete="name" focus-first>
|
||||
<div class="invalid-feedback" v-if="formErrors.fullName">Please enter your full name.</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="email-address">Email address</label>
|
||||
<input class="form-control" id="email-address" type="email" :class="[formErrors.emailAddress ? 'is-invalid' : '']" v-model.trim="formData.emailAddress" placeholder="sturgeon@example.com" autocomplete="email">
|
||||
<div class="invalid-feedback" v-if="formErrors.emailAddress">Please enter a valid email address.</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="password">Choose a password</label>
|
||||
<input class="form-control" id="password" type="password" :class="[formErrors.password ? 'is-invalid' : '']" v-model.trim="formData.password" placeholder="••••••••" autocomplete="new-password">
|
||||
<div class="invalid-feedback" v-if="formErrors.password">Please enter a password.</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="confirm-password">Confirm password</label>
|
||||
<input class="form-control" id="confirm-password" type="password" :class="[formErrors.confirmPassword ? 'is-invalid' : '']" v-model.trim="formData.confirmPassword" placeholder="••••••••" autocomplete="new-password">
|
||||
<div class="invalid-feedback" v-if="formErrors.confirmPassword">Your password and confirmation do not match.</div>
|
||||
</div>
|
||||
<div class="form-group form-check">
|
||||
<input class="form-check-input" id="terms-agreement" type="checkbox" v-model="formData.agreed">
|
||||
<label for="terms-agreement" class="form-check-label" :class="[formErrors.agreed ? 'text-danger' : '']">I have read & agree to the <a target="_blank" href="/terms">terms of service</a>.</label>
|
||||
</div>
|
||||
<cloud-error v-if="cloudError==='emailAlreadyInUse'">It looks like there's already an account with your email address. If you forgot your password, you can recover it <a href="password/forgot">here</a>.</cloud-error>
|
||||
<cloud-error v-else-if="cloudError"></cloud-error>
|
||||
<div class="form-group">
|
||||
<ajax-button type="submit" :syncing="syncing" class="btn-dark btn-lg btn-block">Create account</ajax-button>
|
||||
</div>
|
||||
</ajax-form>
|
||||
<p class="text-center">Have an account? <a href="/login">Sign in</a></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-fluid pt-5 pb-5" v-if="cloudSuccess">
|
||||
<h1 class="text-center">Check your email!</h1>
|
||||
<div class="text-center">
|
||||
<hr/>
|
||||
<p>Your account is nearly ready. All you have to do is click the link we sent to <strong>{{formData.emailAddress}}</strong>.</p>
|
||||
<p>(You can still access your dashboard now, but some features will be unvavailable until we've verified your email address.)</p>
|
||||
<p><a class="btn btn-outline-info" href="/">Go to dashboard</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<%- /* Expose locals as `window.SAILS_LOCALS` :: */ exposeLocalsToBrowser() %>
|
Reference in New Issue
Block a user