fleet/website/views/pages/account/account-overview.ejs
Mike McNeil 27eae209fd
Move fleetdm.com into main Fleet repo (#83)
* rename dir

* no need to install website or docs from npm

At some point, would also be nice to be able to exclude assets/ as well, and to only install a pre-built version of Fleet's frontend code

* Bring in fleetdm.com website

From https://github.com/fleetdm/fleetdm.com as of https://github.com/fleetdm/fleetdm.com/releases/tag/v0.0.21

* add procfile for heroku

Using https://github.com/timanovsky/subdir-heroku-buildpack

* avoid getting anybody's hopes up

* Create deploy-fleet-website.yml (#82)

* Create deploy-fleet-website.yml

* Update deploy-fleet-website.yml

* Update deploy-fleet-website.yml

* Update deploy-fleet-website.yml

* update pjs with SPDX-like license expressions.  also fix repo URL

and remove package lock

* Update deploy-fleet-website.yml

* Update deploy-fleet-website.yml

* remove dummy uri

* Dissect deploy script

* Update deploy-fleet-website.yml

* workaround for eslintrc nesting issue

* lint fixes

* forgot the .js

* add per-commit git config

* Update deploy-fleet-website.yml

* might as well remove that

* cleanup

* connect w/ heroku app and have it actually push

* fix bug I introduced in 578a1a01ffb8404aae869e05005e30a6ba2b2a95

* Update deploy-fleet-website.yml

* Update deploy-fleet-website.yml

* Update deploy-fleet-website.yml

* Update deploy-fleet-website.yml

* the beauty, the glory, of javascript

* GH actions don't like "\n"

* Update deploy-fleet-website.yml

* restore \n chars from 0d45e568f693efba7d7072085bc98d72a482d9ae

hoping I was wrong in 0d45e568f693efba7d7072085bc98d72a482d9ae but see also https://github.community/t/what-is-the-correct-character-escaping-for-workflow-command-values-e-g-echo-xxxx/118465/5

* Update deploy-fleet-website.yml

* Update deploy-fleet-website.yml

* Update deploy-fleet-website.yml

* Update deploy-fleet-website.yml

* Update deploy-fleet-website.yml

* Update deploy-fleet-website.yml

* Update deploy-fleet-website.yml

* Update deploy-fleet-website.yml

* Update deploy-fleet-website.yml

* Update deploy-fleet-website.yml

* Update deploy-fleet-website.yml

* Update deploy-fleet-website.yml

* rename script to prevent duplicate building

* Configure the real website

* clean up

* a test of the deploy workflow

* add handbook to npmignore

* I guess you could call this fixing a typo

* point workflow at master branch

* now clearly bogus: this completely unused version string
2020-12-02 14:48:03 -06:00

109 lines
5.5 KiB
Plaintext
Vendored

<div id="account-overview" v-cloak>
<div class="container pt-5 pb-5">
<h1>My account</h1>
<hr/>
<div class="row mb-3">
<div class="col-sm-6">
<h4>Personal information</h4>
</div>
<div class="col-sm-6">
<span class="float-sm-right">
<a style="width: 150px" class="btn btn-sm btn-outline-info" href="/account/profile">Edit profile</a>
</span>
</div>
</div>
<div class="row">
<div class="col-3">Name:</div>
<div class="col"><strong>{{me.fullName}}</strong></div>
</div>
<div class="row">
<div class="col-3">Email:</div>
<div class="col">
<strong :class="[me.emailStatus === 'unconfirmed' || me.emailStatus === 'change-requested' ? 'text-muted' : '']">{{me.emailChangeCandidate ? me.emailChangeCandidate : me.emailAddress}}</strong>
<span v-if="me.emailStatus === 'unconfirmed' || me.emailStatus === 'change-requested'" class="badge badge-pill badge-warning">Unverified</span>
</div>
</div>
<hr/>
<div class="row mb-3">
<div class="col-sm-6">
<h4>Password</h4>
</div>
<div class="col-sm-6">
<span class="float-sm-right">
<a style="width: 150px" class="btn btn-sm btn-outline-info" href="/account/password">Change password</a>
</span>
</div>
</div>
<div class="row">
<div class="col-3">Password:</div>
<div class="col"><strong>••••••••••</strong></div>
</div>
<hr/>
<div class="row mb-3" v-if="isBillingEnabled">
<div class="col-sm-6">
<h4>Billing</h4>
</div>
<div class="col-sm-6">
<span class="float-sm-right">
<button style="width: 150px;" class="btn btn-sm btn-outline-info" @click="clickUpdateBillingCardButton()">{{ me.hasBillingCard ? 'Change card' : '+ Add card' }}</button>
</span>
</div>
</div>
<div v-if="isBillingEnabled && me.hasBillingCard">
<div class="row">
<div class="col-3">Credit card:</div>
<div class="col">{{me.billingCardBrand}} ending in <strong>{{me.billingCardLast4}}</strong> <a style="text-decoration: underline; cursor: pointer;" class="ml-2" purpose="remove-button" @click="clickRemoveCardButton()">Remove</a></div>
</div>
<div class="row">
<div class="col-3">Expiration:</div>
<div class="col">{{me.billingCardExpMonth}}/{{me.billingCardExpYear}}</div>
</div>
</div>
<div class="alert alert-danger" v-else-if="isBillingEnabled && cloudError">
There was an error updating your credit card information. Please check your information and try again, or <a href="/contact">contact support</a> if the error persists.
</div>
<div class="alert alert-secondary" v-else-if="isBillingEnabled">
You have not linked a payment source to your account. In order to access paid features, you'll need to provide your credit card information. (Don't worry: you will only be charged when you've reached the limit of your free plan.)
</div>
</div>
<% /* Modify Card Info Modal */ %>
<modal v-if="modal === 'update-billing-card'" @close="closeModal()" v-cloak>
<div class="modal-header">
<h2 class="modal-title">{{me.hasBillingCard? 'Edit' : 'Add' }} card</h2>
</div>
<ajax-form :handle-submitting="handleSubmittingUpdateBillingCard" :syncing.sync="syncing" :cloud-error.sync="cloudError" :form-data="formData" :form-rules="formRules" :form-errors.sync="formErrors" @submitted="submittedUpdateBillingCard()">
<div class="modal-body">
<div class="form-group">
<label>Credit card</label>
<stripe-card-element :stripe-publishable-key="stripePublishableKey" :is-errored.sync="formErrors.newPaymentSource" v-model="formData.newPaymentSource" key="billing-card" ref="billingcardref"></stripe-card-element>
</div>
<p class="text-danger" v-if="cloudError"><small>An error occured while processing your request. Please check your information and try again, or <a href="/contact">contact support</a> if the error persists.</small></p>
</div>
<div class="modal-footer flex-row-reverse justify-content-start">
<ajax-button :syncing="syncing" class="btn btn-info">Save card</ajax-button>
<button type="button" class="btn btn-outline-danger mr-2" data-dismiss="modal">Cancel</button>
</div>
</ajax-form>
</modal>
<% /* Confirm Remove Card Info Modal */ %>
<modal v-if="modal === 'remove-billing-card'" @close="closeModal()" v-cloak>
<div class="modal-header">
<h5 class="modal-title">Remove Card Info?</h5>
</div>
<ajax-form action="updateBillingCard" :syncing.sync="syncingRemoveCard" :cloud-error.sync="cloudError" :form-data="formData" :form-rules="formRules" :form-errors.sync="formErrors" @submitted="submittedRemoveCardForm()">
<div class="modal-body text-center">
<p>Are you sure you want to remove your {{me.billingCardBrand}} ending in <strong>{{me.billingCardLast4}}</strong>?</p>
<p class="text-muted mb-0">This may restrict your access to paid features.</p>
<cloud-error v-if="cloudError"></cloud-error>
</div>
<div class="modal-footer border-0 justify-content-center">
<button data-dismiss="modal" class="btn btn-outline-secondary mr-2">Never mind</button>
<ajax-button type="submit" :syncing="syncingRemoveCard" class="btn btn-danger ml-2">Remove</ajax-button>
</div>
</ajax-form>
</modal>
</div>
<%- /* Expose locals as `window.SAILS_LOCALS` :: */ exposeLocalsToBrowser() %>