|
1 | 1 | <div id="login" v-cloak>
|
2 |
| - <div :purpose="[showCustomerLogin ? 'customer-login-container' : 'login-container']" class="container-fluid pb-5 px-lg-0 px-3"> |
3 |
| - <div purpose="page-heading" v-if="showCustomerLogin"> |
| 2 | + <div purpose="page-container" class="container"> |
| 3 | + <div purpose="page-heading"> |
4 | 4 | <h1>Welcome to Fleet</h1>
|
5 | 5 | <p class="mb-0">We just need a few details in order to get started.</p>
|
6 | 6 | </div>
|
7 |
| - <div purpose="page-heading" v-else> |
8 |
| - <h1>Welcome to Fleet</h1> |
9 |
| - <p class="mb-0">Sign in to your Fleet account.</p> |
10 |
| - </div> |
11 |
| - <div purpose="customer-portal-form" class="card card-body mb-5"> |
12 |
| - <div purpose="register-link" v-if="showCustomerLogin"> |
13 |
| - <a :href="registerSlug">Create an account</a> |
14 |
| - </div> |
15 |
| - <ajax-form class="customers-login" action="login" :syncing.sync="syncing" :cloud-error.sync="cloudError" :form-data="formData" :form-rules="formRules" :form-errors.sync="formErrors" @submitted="submittedForm()"> |
16 |
| - <div class="form-group"> |
17 |
| - <label for="email">Email</label> |
18 |
| - <input type="email" class="form-control" :class="[formErrors.emailAddress ? 'is-invalid' : '']" v-model.trim="formData.emailAddress" autocomplete="email" focus-first> |
19 |
| - <div class="invalid-feedback" v-if="formErrors.emailAddress">Please provide a valid email address.</div> |
| 7 | + <div purpose="form-container" class="d-flex flex-lg-row flex-column justify-content-between align-items-start"> |
| 8 | + <div purpose="login-form" class="mx-auto mx-lg-0"> |
| 9 | + <div purpose="customer-portal-form" class="card card-body mb-5"> |
| 10 | + <div purpose="register-link" v-if="showCustomerLogin"> |
| 11 | + <a :href="registerSlug">Create an account</a> |
| 12 | + </div> |
| 13 | + <ajax-form class="customers-login" action="login" :syncing.sync="syncing" :cloud-error.sync="cloudError" :form-data="formData" :form-rules="formRules" :form-errors.sync="formErrors" @submitted="submittedForm()"> |
| 14 | + <div class="form-group"> |
| 15 | + <label for="email">Email</label> |
| 16 | + <input type="email" class="form-control" :class="[formErrors.emailAddress ? 'is-invalid' : '']" v-model.trim="formData.emailAddress" autocomplete="email" focus-first> |
| 17 | + <div class="invalid-feedback" v-if="formErrors.emailAddress">Please provide a valid email address.</div> |
| 18 | + </div> |
| 19 | + <div class="form-group"> |
| 20 | + <label for="password">Password</label> |
| 21 | + <input type="password" class="form-control" :class="[formErrors.password ? 'is-invalid' : '']" v-model.trim="formData.password" autocomplete="current-password"> |
| 22 | + <div class="invalid-feedback" v-if="formErrors.password">Please enter your password.</div> |
| 23 | + </div> |
| 24 | + <cloud-error v-if="cloudError === 'noUser'">The email address provided doesn't match an existing account. Create an account <a href="/customers/register">here</a>.</cloud-error> |
| 25 | + <cloud-error v-else-if="cloudError === 'badCombo'">Something’s not quite right with your email or password.</cloud-error> |
| 26 | + <cloud-error v-else-if="cloudError"></cloud-error> |
| 27 | + <div class="pb-3"> |
| 28 | + <ajax-button :syncing="syncing" spinner="true" purpose="submit-button" class="btn-primary mt-4 btn-lg btn-block">Sign in</ajax-button> |
| 29 | + </div> |
| 30 | + </ajax-form> |
| 31 | + <span class="text-center small"><a href="/customers/forgot-password">Forgot your password?</a></span> |
20 | 32 | </div>
|
21 |
| - <div class="form-group"> |
22 |
| - <label for="password">Password</label> |
23 |
| - <input type="password" class="form-control" :class="[formErrors.password ? 'is-invalid' : '']" v-model.trim="formData.password" autocomplete="current-password"> |
24 |
| - <div class="invalid-feedback" v-if="formErrors.password">Please enter your password.</div> |
25 |
| - </div> |
26 |
| - <cloud-error v-if="cloudError === 'noUser'">The email address provided doesn't match an existing account. Create an account <a href="/customers/register">here</a>.</cloud-error> |
27 |
| - <cloud-error v-else-if="cloudError === 'badCombo'">Something’s not quite right with your email or password.</cloud-error> |
28 |
| - <cloud-error v-else-if="cloudError"></cloud-error> |
29 |
| - <div class="pb-3"> |
30 |
| - <ajax-button :syncing="syncing" spinner="true" purpose="submit-button" class="btn-primary mt-4 btn-lg btn-block">Sign in</ajax-button> |
| 33 | + </div> |
| 34 | + <div purpose="quote-and-logos" class="mx-auto mx-lg-0"> |
| 35 | + <% if(typeof primaryBuyingSituation === 'undefined' || ['mdm'].includes(primaryBuyingSituation)) { %> |
| 36 | + <div purpose="quote"> |
| 37 | + <img alt="an opening quotation mark" style="width:20px; margin-bottom: 16px;" src="/images/icon-quote-21x17@2x.png"> |
| 38 | + <p purpose="quote-text"> |
| 39 | + Exciting. This is a team that listens to feedback. |
| 40 | + </p> |
| 41 | + <div purpose="quote-author-info" class="d-flex flex-row align-items-center"> |
| 42 | + <div purpose="profile-picture"> |
| 43 | + <img alt="Erik Gomez" src="/images/testimonial-author-erik-gomez-48x48@2x.png"> |
| 44 | + </div> |
| 45 | + <div class="d-flex flex-column align-self-top"> |
| 46 | + <p purpose="name" class="font-weight-bold m-0">Erik Gomez</p> |
| 47 | + <p purpose="job-title" class="m-0">Staff Client Platform Engineer</p> |
| 48 | + </div> |
| 49 | + </div> |
| 50 | + </div> |
| 51 | + <% } else if (['eo-it'].includes(primaryBuyingSituation)) { %> |
| 52 | + <div purpose="quote"> |
| 53 | + <img alt="an opening quotation mark" style="width:20px; margin-bottom: 16px;" src="/images/icon-quote-21x17@2x.png"> |
| 54 | + <p purpose="quote-text"> |
| 55 | + Mad props to how easy making a deploy pkg of the agent was. I wish everyone made stuff that easy. |
| 56 | + </p> |
| 57 | + <div purpose="quote-author-info" class="d-flex flex-row align-items-center"> |
| 58 | + <div purpose="profile-picture"> |
| 59 | + <img alt="Wes Whetstone" src="/images/testimonial-author-wes-whetstone-48x48@2x.png"> |
| 60 | + </div> |
| 61 | + <div class="d-flex flex-column align-self-top"> |
| 62 | + <p purpose="name" class="font-weight-bold m-0">Wes Whetstone</p> |
| 63 | + <p purpose="job-title" class="m-0">Staff CPE</p> |
| 64 | + </div> |
| 65 | + </div> |
| 66 | + </div> |
| 67 | + <% } else if (['eo-security'].includes(primaryBuyingSituation)) { %> |
| 68 | + <div purpose="quote"> |
| 69 | + <img alt="an opening quotation mark" style="width:20px; margin-bottom: 16px;" src="/images/icon-quote-21x17@2x.png"> |
| 70 | + <p purpose="quote-text"> |
| 71 | + Something I really appreciate about working with you guys is that it doesn't feel like I'm talking to a vendor. It actually feels like I'm talking to my team, and I really appreciate it. |
| 72 | + </p> |
| 73 | + <div purpose="quote-author-info" class="d-flex flex-row align-items-center"> |
| 74 | + <div purpose="profile-picture"> |
| 75 | + <img alt="Chandra Majumdar" src="/images/testimonial-author-chandra-majumdar-48x48@2x.png"> |
| 76 | + </div> |
| 77 | + <div class="d-flex flex-column align-self-top"> |
| 78 | + <p purpose="name" class="font-weight-bold m-0">Chandra Majumdar</p> |
| 79 | + <p purpose="job-title" class="m-0">Partner - Cyber and Strategic Risk</p> |
| 80 | + </div> |
| 81 | + </div> |
| 82 | + </div> |
| 83 | + <% } else if (['vm'].includes(primaryBuyingSituation)) { %> |
| 84 | + <div purpose="quote"> |
| 85 | + <img alt="an opening quotation mark" style="width:20px; margin-bottom: 16px;" src="/images/icon-quote-21x17@2x.png"> |
| 86 | + <p purpose="quote-text"> |
| 87 | + The visibility down into the assets covered by the agent is phenomenal. Fleet has become the central source for a lot of things. |
| 88 | + </p> |
| 89 | + <div purpose="quote-author-info" class="d-flex flex-row align-items-center"> |
| 90 | + <div purpose="profile-picture"> |
| 91 | + <img alt="Andre Shields" src="/images/testimonial-author-andre-shields-48x48@2x.png"> |
| 92 | + </div> |
| 93 | + <div class="d-flex flex-column align-self-top"> |
| 94 | + <p purpose="name" class="font-weight-bold m-0">Andre Shields</p> |
| 95 | + <p purpose="job-title" class="m-0">Staff Cybersecurity Engineer, Vulnerability Management</p> |
| 96 | + </div> |
| 97 | + </div> |
| 98 | + </div> |
| 99 | + <% } %> |
| 100 | + <div purpose="logos" class="flex-column flex-wrap align-items-center w-100"> |
| 101 | + <logo-carousel></logo-carousel> |
31 | 102 | </div>
|
32 |
| - </ajax-form> |
33 |
| - <span class="text-center small"><a href="/customers/forgot-password">Forgot your password?</a></span> |
| 103 | + </div> |
34 | 104 | </div>
|
35 |
| - <logo-carousel></logo-carousel> |
36 | 105 | </div>
|
37 | 106 | </div>
|
38 | 107 | <%- /* Expose locals as `window.SAILS_LOCALS` :: */ exposeLocalsToBrowser() %>
|
0 commit comments