Skip to content
Snippets Groups Projects
SignUp.vue 2.66 KiB
Newer Older
moon's avatar
moon committed
<template>
  <div>
    <div class="flex items-center justify-center">
      <div class="sm:block">
        <div class="p-5 mx-auto text-left font-raleway">
          <h1 class="font-bold text-left font-montserrat text-3xl sm:text-5xl mb-7">
            Sign Up to join DD-Code
          </h1>
          <p v-show="error" class="text-lg text-red-500">{{ errorMsg }}</p>
          <form @submit="register">
            <div class="my-4">
              <h1 class="text-left font-bold mb-2 text-xl sm:text-2xl font-montserrat">Name</h1>
              <input type="text" v-model="name" class="text-xl outline-none pb-2 w-4/5 bg-transparent border-b hover:border-blue-700 focus:border-blue-700">
            </div>
            <div class="my-4">
              <h1 class="text-left font-bold mb-2 text-xl sm:text-2xl font-montserrat">Email</h1>
              <input type="email" v-model="email" class="text-xl outline-none pb-2 w-4/5 bg-transparent border-b hover:border-blue-700 focus:border-blue-700">
            </div>
            <div class="my-4">
              <h1 class="text-left font-bold mb-2 text-xl sm:text-2xl font-montserrat">Password</h1>
              <input type="password" v-model="password" class="text-xl outline-none pb-2 w-4/5 bg-transparent border-b hover:border-blue-700 focus:border-blue-700">
            </div>
            <div class="my-4">
              <h1 class="text-left font-bold mb-2 text-xl sm:text-2xl font-montserrat">Username</h1>
              <input type="text" v-model="username" class="text-xl outline-none pb-2 w-4/5 bg-transparent border-b hover:border-blue-700 focus:border-blue-700">
            </div>

            <button type="submit" :disabled="name.length < 6 || password.length < 6 || username.length < 3" class="bg-green-400 p-5 text-white">
              Sign Up <span class="fa fa-arrow-right"/>
            </button>
          </form>
        </div>
      </div>
    </div>
  </div>
</template>
<script>
export default {
  name: 'Register',
  data() {
    return {
      name: '',
      email: '',
      password: '',
      username: '',
      error: false,
      errorMsg: `An Error occurred, please try again`
    }
  },
  methods: {
    async register(e) {
      const vm = this
      try {
        e.preventDefault()
        await vm.axios.post(`http://localhost:1337/api/auth/local/register`, {
          name: vm.name,
          password: vm.password,
          email: vm.email,
          username: vm.username
        })
        vm.$router.push('login')
      } catch(e) {
        // console.error(e)
        vm.error = true
        vm.email = ''
      }
    }
  }
}
</script>
<style>
  @import url('~@/assets/bootstrap.css');

  a {
    color: #42b983;
  }
</style>