| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 | <template lang="pug">  transition(:duration="400")    .modal(v-show='isShown', v-cloak)      transition(name='modal-background')        .modal-background(v-show='isShown')      .modal-container        transition(name='modal-content')          .modal-content(v-show='isShown')            header.is-blue              span {{ $t('modal.createusertitle') }}              p.modal-notify(:class='{ "is-active": isLoading }'): i            section              label.label {{ $t('modal.createuseremail') }}              p.control.is-fullwidth                input.input(type='text', :placeholder='$t("modal.createuseremailplaceholder")', v-model='email', ref='createUserEmailInput')            section              label.label {{ $t('modal.createuserprovider') }}              p.control.is-fullwidth                select(v-model='provider')                  option(value='local') Local Database                  option(value='windowslive') Microsoft Account                  option(value='google') Google ID                  option(value='facebook') Facebook                  option(value='github') GitHub                  option(value='slack') Slack            section(v-if='provider=="local"')              label.label {{ $t('modal.createuserpassword') }}              p.control.is-fullwidth                input.input(type='password', placeholder='', v-model='password')            section(v-if='provider=="local"')              label.label {{ $t('modal.createusername') }}              p.control.is-fullwidth                input.input(type='text', :placeholder='$t("modal.createusernameplaceholder")', v-model='name')            footer              a.button.is-grey.is-outlined(@click='cancel') {{ $t('modal.discard') }}              a.button(@click='create', v-if='provider=="local"', :disabled='isLoading', :class='{ "is-disabled": isLoading, "is-blue": !loading }') {{ $t('modal.createuser') }}              a.button(@click='create', v-if='provider!="local"', :disabled='isLoading', :class='{ "is-disabled": isLoading, "is-blue": !loading }') {{ $t('modal.createuserauthorize') }}</template><script>export default {  name: 'modal-create-user',  data() {    return {      email: '',      provider: 'local',      password: '',      name: '',      isLoading: false    }  },  computed: {    isShown() {      return this.$store.state.modalCreateUser.shown    }  },  methods: {    init() {      let self = this      self._.delay(() => {        self.$refs.createUserEmailInput.focus()      }, 100)    },    cancel() {      this.$store.dispatch('modalCreateUser/close')      this.email = ''      this.provider = 'local'    },    create() {      let self = this      this.isLoading = true      this.$http.post('/admin/users/create', {        email: this.email,        provider: this.provider,        password: this.password,        name: this.name      }).then(resp => {        return resp.json()      }).then(resp => {        this.isLoading = false        if (resp.ok) {          this.cancel()          window.location.reload(true)        } else {          self.$store.dispatch('alert', {            style: 'red',            icon: 'ui-2_square-remove-09',            msg: resp.msg          })        }      }).catch(err => {        this.isLoading = false        self.$store.dispatch('alert', {          style: 'red',          icon: 'ui-2_square-remove-09',          msg: 'Error: ' + err.body.msg        })      })    }  },  mounted() {    this.$root.$on('modalCreateUser/init', this.init)  }}</script>
 |