Advertisement
Guest User

Register.vue

a guest
Jan 21st, 2018
311
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <template>
  2.     <div>
  3.         <HeaderComponent></HeaderComponent>
  4.         <!-- BEGIN HEADER -->
  5.         <header class="section-header header-sm t-dark">
  6.             <div class="container top-element">
  7.                 <div class="row top-text">
  8.                     <i class="nc-icon-outline users_single-01 header-icon"></i>
  9.                     <h1 class="header-title t-important m-b-0">{{ $root.trans.translate("register") }}</h1>
  10.                     <p class="subtitle">{{ $root.trans.translate("createYourAccountInFewSeconds") }}</p>
  11.                 </div>
  12.             </div>
  13.         </header>
  14.         <!-- END HEADER -->
  15.  
  16.         <!-- BEGIN REGISTER -->
  17.         <div class="section container">
  18.             <div class="row">
  19.                 <div class="col-lg-6 col-md-8 col-xs-10 col-lg-offset-3 col-md-offset-2 col-xs-offset-1">
  20.                     <div class="m-b-100">
  21.                         <form class="form-register">
  22.                             <div class="form-group required">
  23.                                 <label>{{ $root.trans.translate("email") }}</label>
  24.                                 <div class="prepend-icon">
  25.                                     <p :class="{ 'control': true }">
  26.                                         <input v-validate="'required|email|emailAlreadyExists'"
  27.                                                :class="{
  28.                                                    'form-control input-lg': true,
  29.                                                    'input': true,
  30.                                                    'is-danger': errors.has('email')
  31.                                                    }"
  32.                                                name="email" type="email"
  33.                                                v-bind:placeholder="$root.trans.translate('enterYourEmail')"
  34.                                                v-model="email"
  35.                                         />
  36.                                         <i class="nc-icon-outline ui-1_email-83"></i>
  37.                                         <span v-show="errors.has('email')" class="help-block with-errors">
  38.                                                 {{ errors.first('email') }}
  39.                                             </span>
  40.                                     </p>
  41.                                 </div>
  42.                             </div>
  43.                             <div class="row">
  44.                                 <div class="col-sm-6 required">
  45.                                     <div class="form-group">
  46.                                         <div class="form-group">
  47.                                             <label>{{ $root.trans.translate("password") }}</label>
  48.                                             <div class="prepend-icon">
  49.                                                 <p :class="{ 'control': true }">
  50.                                                     <input v-validate="'required|min:6'"
  51.                                                            :class="{
  52.                                                            'form-control input-lg': true,
  53.                                                            'input': true,
  54.                                                            'is-danger': errors.has('password')
  55.                                                           }"
  56.                                                            name="password" type="password" v-model="password"
  57.                                                            v-bind:placeholder="$root.trans.translate('enterYourPassword')"
  58.                                                     />
  59.                                                     <i class="nc-icon-outline ui-1_lock-circle"></i>
  60.                                                     <span v-show="errors.has('password')"
  61.                                                           class="help-block with-errors">
  62.                                                         {{ errors.first('password') }}
  63.                                                     </span>
  64.                                                 </p>
  65.                                             </div>
  66.                                         </div>
  67.                                     </div>
  68.                                 </div>
  69.                                 <div class="col-sm-6 required">
  70.                                     <div class="form-group">
  71.                                         <div class="form-group">
  72.                                             <label>{{ $root.trans.translate("repeatPassword") }}</label>
  73.                                             <div class="prepend-icon">
  74.                                                 <p :class="{ 'control': true }">
  75.                                                     <input v-validate="'confirmed:password'"
  76.                                                            :class="{
  77.                                                                'form-control input-lg': true,
  78.                                                                'input': true,
  79.                                                                'is-danger': errors.has('repeatPassword')
  80.                                                           }"
  81.                                                            name="repeatPassword" type="password"
  82.                                                            v-model="repeatPassword"
  83.                                                            v-bind:placeholder="$root.trans.translate('enterYourRepeatPassword')"
  84.                                                     />
  85.                                                     <i class="nc-icon-outline ui-1_lock-circle"></i>
  86.                                                     <span v-show="errors.has('repeatPassword')"
  87.                                                           class="help-block with-errors">
  88.                                                         {{ errors.first('repeatPassword') }}
  89.                                                     </span>
  90.                                                 </p>
  91.                                             </div>
  92.                                         </div>
  93.                                     </div>
  94.                                 </div>
  95.                             </div>
  96.                             <hr>
  97.                             <div class="row">
  98.                                 <div class="col-sm-6 required">
  99.                                     <div class="form-group">
  100.                                         <label>{{ $root.trans.translate("firstName") }}*</label>
  101.                                         <div class="prepend-icon">
  102.                                             <p :class="{ 'control': true }">
  103.                                                 <input v-validate="'required|alpha'"
  104.                                                        :class="{
  105.                                                        'form-control input-lg': true,
  106.                                                        'input': true,
  107.                                                        'is-danger': errors.has('firstName')
  108.                                                   }"
  109.                                                        name="firstName" type="text" v-model="firstName"
  110.                                                        placeholder="John"
  111.                                                 />
  112.                                                 <i class="nc-icon-outline users_single-03"></i>
  113.                                                 <span v-show="errors.has('firstName')" class="help-block with-errors">
  114.                                                     {{ errors.first('firstName') }}
  115.                                                 </span>
  116.                                             </p>
  117.                                         </div>
  118.                                     </div>
  119.                                 </div>
  120.                                 <div class="col-sm-6">
  121.                                     <div class="form-group">
  122.                                         <label>{{ $root.trans.translate("lastName") }}*</label>
  123.                                         <div class="prepend-icon">
  124.                                             <p :class="{ 'control': true }">
  125.                                                 <input v-validate="'required|alpha'"
  126.                                                        :class="{
  127.                                                        'form-control input-lg': true,
  128.                                                        'input': true,
  129.                                                        'is-danger': errors.has('lastName')
  130.                                                   }"
  131.                                                        name="lastName" type="text" v-model="lastName"
  132.                                                        placeholder="Doe"
  133.                                                 />
  134.                                                 <i class="nc-icon-outline users_single-03"></i>
  135.                                                 <span v-show="errors.has('firstName')" class="help-block with-errors">
  136.                                                     {{ errors.first('lastName') }}
  137.                                                 </span>
  138.                                             </p>
  139.                                         </div>
  140.                                     </div>
  141.                                 </div>
  142.                             </div>
  143.                             <div class="row">
  144.                                 <div class="col-sm-6 required">
  145.                                     <div class="form-group">
  146.                                         <label>{{ $root.trans.translate("address") }}*</label>
  147.                                         <div class="prepend-icon">
  148.                                             <p :class="{ 'control': true }">
  149.                                                 <input v-validate="'required'"
  150.                                                        :class="{
  151.                                                        'form-control input-lg': true,
  152.                                                        'input': true,
  153.                                                        'is-danger': errors.has('lastName')
  154.                                                   }"
  155.                                                        name="address" type="text" v-model="address"
  156.                                                        placeholder="Happy street 1"
  157.                                                 />
  158.                                                 <i class="nc-icon-outline users_single-03"></i>
  159.                                                 <span v-show="errors.has('address')" class="help-block with-errors">
  160.                                                     {{ errors.first('address') }}
  161.                                                 </span>
  162.                                             </p>
  163.                                         </div>
  164.                                     </div>
  165.                                 </div>
  166.                                 <div class="col-sm-6">
  167.                                     <div class="form-group">
  168.                                         <label>{{ $root.trans.translate("postNumber") }}*</label>
  169.                                         <div class="prepend-icon">
  170.                                             <p :class="{ 'control': true }">
  171.                                                 <input v-validate="'required'"
  172.                                                        :class="{
  173.                                                        'form-control input-lg': true,
  174.                                                        'input': true,
  175.                                                        'is-danger': errors.has('postNumber')
  176.                                                   }"
  177.                                                        name="postNumber" type="text" v-model="postNumber"
  178.                                                        placeholder="10100"
  179.                                                 />
  180.                                                 <i class="nc-icon-outline users_single-03"></i>
  181.                                                 <span v-show="errors.has('postNumber')" class="help-block with-errors">
  182.                                                     {{ errors.first('postNumber') }}
  183.                                                 </span>
  184.                                             </p>
  185.                                         </div>
  186.                                     </div>
  187.                                 </div>
  188.                             </div>
  189.                             <div class="row">
  190.                                 <div class="col-sm-6">
  191.                                     <div class="form-group">
  192.                                         <label>{{ $root.trans.translate("city") }}*</label>
  193.                                         <div class="prepend-icon">
  194.                                             <p :class="{ 'control': true }">
  195.                                                 <input v-validate="'required'"
  196.                                                        :class="{
  197.                                                        'form-control input-lg': true,
  198.                                                        'input': true,
  199.                                                        'is-danger': errors.has('city')
  200.                                                   }"
  201.                                                        name="city" type="text" v-model="city"
  202.                                                        placeholder="New york"
  203.                                                 />
  204.                                                 <i class="nc-icon-outline users_single-03"></i>
  205.                                                 <span v-show="errors.has('city')" class="help-block with-errors">
  206.                                                     {{ errors.first('city') }}
  207.                                                 </span>
  208.                                             </p>
  209.                                         </div>
  210.                                     </div>
  211.                                 </div>
  212.                                 <div class="col-sm-6">
  213.                                     <div class="form-group">
  214.                                         <label>{{ $root.trans.translate("country") }}*</label>
  215.                                         <select class="form-control" data-container-class="input-lg" data-search="true"
  216.                                                 v-model="country">
  217.                                             <option v-for="c in countries" v-bind:value="c.country">
  218.                                                 {{c.country}}
  219.                                             </option>
  220.                                         </select>
  221.                                     </div>
  222.                                 </div>
  223.                             </div>
  224.                             <hr>
  225.                             <div class="row">
  226.                                 <div class="col-sm-6">
  227.                                     <div class="form-group">
  228.                                         <label>{{ $root.trans.translate("isCompany") }}</label>
  229.                                         <input type="checkbox" v-model="isCompanyValue" v-on:change="isCompany($event)">
  230.                                     </div>
  231.                                 </div>
  232.                             </div>
  233.                             <div class="row" v-show="showDiv">
  234.                                 <div class="col-sm-6">
  235.                                     <div class="form-group">
  236.                                         <label>{{ $root.trans.translate("company") }}</label>
  237.                                         <div class="prepend-icon">
  238.                                             <p :class="{ 'control': true }">
  239.                                                 <input v-validate="''"
  240.                                                        :class="{
  241.                                                        'form-control input-lg': true,
  242.                                                        'input': true,
  243.                                                        'is-danger': errors.has('company')
  244.                                                   }"
  245.                                                        name="company" type="text" v-model="company"
  246.                                                        placeholder="John Doe L.T.E."
  247.                                                 />
  248.                                                 <i class="nc-icon-outline users_single-03"></i>
  249.                                                 <span v-show="errors.has('company')" class="help-block with-errors">
  250.                                                     {{ errors.first('company') }}
  251.                                                 </span>
  252.                                             </p>
  253.                                         </div>
  254.                                     </div>
  255.                                 </div>
  256.                                 <div class="col-sm-6">
  257.                                     <div class="form-group">
  258.                                         <label>{{ $root.trans.translate("taxNumber") }}</label>
  259.                                         <div class="prepend-icon">
  260.                                             <p :class="{ 'control': true }">
  261.                                                 <input v-validate="'required'"
  262.                                                        :class="{
  263.                                                       'form-control input-lg': true, 'input': true,
  264.                                                       'is-danger': errors.has('taxNumber')
  265.                                                       }"
  266.                                                        name="taxNumber" type="text" v-model="taxNumber"
  267.                                                        placeholder="SI45678148"
  268.                                                 />
  269.                                                 <i class="nc-icon-outline users_single-03"></i>
  270.                                                 <span v-show="errors.has('taxNumber')" class="help-block with-errors">
  271.                                                     {{ errors.first('taxNumber') }}
  272.                                                 </span>
  273.                                             </p>
  274.                                         </div>
  275.                                     </div>
  276.                                 </div>
  277.                             </div>
  278.                             <hr>
  279.                             <div class="checkbox">
  280.                                 <input type="checkbox" id="terms" v-model="iAggre">
  281.                                 <label for="terms">{{ $root.trans.translate("iAgreeWithTerms") }}</label>
  282.                             </div>
  283.                             <div class="m-t-20">
  284.                                 <button type="submit" id="submit-form" @click="register($event)"
  285.                                         class="btn btn-lg btn-important btn-primary btn-block"
  286.                                         :disabled="errors.any() || !isValidEmail || !isComplete">
  287.                                     {{ $root.trans.translate("createMyAccount") }}
  288.                                 </button>
  289.                                 <flash></flash>
  290.                             </div>
  291.                         </form>
  292.                         <p class="m-t-20">{{ $root.trans.translate("alreadyHaveAnAccount") }}?
  293.                             <router-link to="/login">
  294.                                 <strong>{{ $root.trans.translate("registerLogin") }}</strong>
  295.                             </router-link>
  296.                         </p>
  297.                     </div>
  298.                 </div>
  299.             </div>
  300.         </div>
  301.         <!-- END REGISTER -->
  302.         <FooterComponent></FooterComponent>
  303.     </div>
  304. </template>
  305.  
  306. <script>
  307.     import HeaderComponent from './HeaderComponent.vue'
  308.     import FooterComponent from './FooterComponent.vue'
  309.  
  310.     import Vue from 'vue'
  311.     import axios from 'axios'
  312.     import VueAxios from 'vue-axios'
  313.     import VeeValidate from 'vee-validate';
  314.     import Flash from './Flash.vue'
  315.     import VueLocalStorage from 'vue-localstorage'
  316.  
  317.     Vue.use(VeeValidate, VueAxios, axios);
  318.     Vue.use(VueLocalStorage, {
  319.         name: 'ls',
  320.         bind: true //created computed members from your variable declarations
  321.     });
  322.  
  323.     export default {
  324.         name: 'Register',
  325.         components: {
  326.             'HeaderComponent': HeaderComponent,
  327.             'FooterComponent': FooterComponent,
  328.             'Flash': Flash
  329.         },
  330.         data() {
  331.             return {
  332.                 // prepare variables for registration form
  333.                 firstName: '',
  334.                 lastName: '',
  335.                 email: '',
  336.                 password: '',
  337.                 repeatPassword: '',
  338.                 address: '',
  339.                 postNumber: '',
  340.                 city: '',
  341.                 country: '',
  342.                 isCompanyValue: false,
  343.                 company: '',
  344.                 taxNumber: '',
  345.                 showDiv: false,
  346.                 iAggre: false,
  347.                 // prepare countries for drop down
  348.                 countries: {}
  349.             }
  350.         },
  351.         methods: {
  352.             // check if you are logged in
  353.             isLoggedIn() {
  354.                 let token = this.$jwt.getToken();
  355.                 if (token) {
  356.                     let jwtPayloadDecoder = require('jwt-payload-decoder');
  357.                     let payload = jwtPayloadDecoder.getPayload(token);
  358.                     if (payload.loggedIn) {
  359.                         return true;
  360.                     } else return false;
  361.                 } else return false;
  362.  
  363.             },
  364.             register() {
  365.  
  366.             },
  367.             getCountries() {
  368.                 this.$http.get(this.$apiUrl + `rest/api/public/Country/Country`)
  369.                     .then((response) => {
  370.                         this.countries = response.data.data
  371.                     });
  372.             },
  373.             isCompany() {
  374.                 this.showDiv = false;
  375.                 if (this.isCompanyValue) {
  376.                     this.showDiv = true;
  377.                 }
  378.             }
  379.         },
  380.         mounted: function () {
  381.             this.getCountries();
  382.         },
  383.         create: function () {
  384.             // Check if user logged in. If so redirect to home
  385.             if (this.isLoggedIn()) {
  386.                 this.$router.push('/');
  387.             }
  388.         },
  389.         computed: {
  390.             // Form validation for contact form
  391.             isComplete: function () {
  392.                 return this.firstName && this.lastName && this.email && this.password && this.address && this.postNumber
  393.                     && this.city && this.country && this.iAggre;
  394.             },
  395.             isValidEmail: function () {
  396.                 var re = /\S+@\S+\.\S+/;
  397.                 return re.test(this.email);
  398.             }
  399.         },
  400.         created() {
  401.             this.$validator.extend('emailAlreadyExists', {
  402.                 getMessage: field => field + 'Email already exists.',
  403.                 validate: value => {
  404.                     let params = new URLSearchParams();
  405.                     params.append('email', value);
  406.                     this.$http.post(this.$apiUrl + `rest/api/public/User/checkIfUserExists`, params, {
  407.                         headers: {
  408.                             'Content-Type': 'application/x-www-form-urlencoded',
  409.                         }
  410.                     })
  411.                 }
  412.             })
  413.         }
  414.     }
  415. </script>
  416.  
  417. <!-- Add "scoped" attribute to limit CSS to this component only -->
  418. <style scoped>
  419. </style>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement