Skip to content
Snippets Groups Projects
Login.vue 3.25 KiB
Newer Older
  • Learn to ignore specific revisions
  •   <v-container fill-height>
    
        <v-layout
          align-center
          justify-center
        >
          <v-dialog
            v-model="registerDialog"
            class="pa-4"
            max-width="30%"
          >
            <register-dialog @registered="registered($event)" />
    
          <v-flex
    
    robinwilliam.hundt's avatar
    robinwilliam.hundt committed
            xs12
            sm12
            md10
            lg7
          >
            <img
    
              src="https://grady.informatik.uni-goettingen.de/static/img/brand.svg"
    
    robinwilliam.hundt's avatar
    robinwilliam.hundt committed
              class="grady-logo"
            >
          </v-flex>
          <v-divider
            vertical
            inset
            class="ma-4"
          />
    
          <v-flex
            text-xs-center
            xs8
            sm6
            md4
            lg2
          >
    
    robinwilliam.hundt's avatar
    robinwilliam.hundt committed
            <h2 class="pt-3">
    
    robinwilliam.hundt's avatar
    robinwilliam.hundt committed
            </h2>
    
            <v-alert
              v-if="msg"
    
              color="error"
              :value="true"
              transition="fade-transition"
    
            >
              {{ msg }}
            </v-alert>
            <p v-else>
              But I corrected them, sir.
            </p>
    
              @submit.prevent="submit"
            >
    
              <v-text-field
                v-model="credentials.username"
    
                label="Username"
    
                required
                autofocus
              />
              <v-text-field
                v-model="credentials.password"
    
                label="Password"
    
                type="password"
                required
              />
    
              <v-layout class="btn-container">
    
                <v-btn
                  id="register"
                  @click="registerDialog = true"
                >
                  Register
                </v-btn>
                <v-btn
                  :loading="loading"
                  type="submit"
                  color="primary"
                >
                  Access
                </v-btn>
    
            </v-form>
          </v-flex>
        </v-layout>
      </v-container>
    
    import { mapActions, mapState } from 'vuex'
    
    import RegisterDialog from '@/components/RegisterDialog'
    
    import { Authentication as Auth } from '@/store/modules/authentication'
    
      name: 'GradyLogin',
    
      components: { RegisterDialog },
    
      data () {
        return {
          credentials: {
            username: '',
            password: ''
    
          registerDialog: false,
          loading: false
        }
      },
      computed: {
    
        msg () { return Auth.state.message },
        userRole () { return Auth.state.user.role },
    
      },
      methods: {
        submit () {
          this.loading = true
    
          Auth.getJWT(this.credentials).then(() => {
    
            return Promise.all([
    
              Auth.getJWTTimeDelta()
            ])
          }).then(() => {
            this.$router.push({ name: 'home' })
    
            this.loading = false
    
            let msg = 'Login failed. Please try again.'
            if (typeof err === 'string') {
    
            this.loading = false
          })
    
        },
        registered (credentials) {
          this.registerDialog = false
          this.credentials.username = credentials.username
          this.credentials.password = credentials.password
    
          Auth.SET_MESSAGE('Your account is being activated. Please wait.')
    
      .v-btn {
        margin: 0px;
      }
    
      .btn-container {
        display: flex;
        flex-wrap: nowrap;
        justify-content: space-around;
      }
    
    robinwilliam.hundt's avatar
    robinwilliam.hundt committed
    
      .grady-logo {
        width: 100%;
      }