diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/App.vue | 1 | ||||
| -rw-r--r-- | src/main.js | 3 | ||||
| -rw-r--r-- | src/services/AuthService.js | 34 | ||||
| -rw-r--r-- | src/views/Home.vue | 2 | ||||
| -rw-r--r-- | src/views/Login.vue | 25 | ||||
| -rw-r--r-- | src/views/Register.vue | 27 |
6 files changed, 63 insertions, 29 deletions
diff --git a/src/App.vue b/src/App.vue index 403eae2..9d9e5ef 100644 --- a/src/App.vue +++ b/src/App.vue | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | <template> | 1 | <template> |
| 2 | <div id="app"> | 2 | <div id="app"> |
| 3 | <router-view/> | 3 | <router-view/> |
| 4 | <notifications /> | ||
| 4 | </div> | 5 | </div> |
| 5 | </template> | 6 | </template> |
| 6 | 7 | ||
diff --git a/src/main.js b/src/main.js index c370aef..95d9800 100644 --- a/src/main.js +++ b/src/main.js | |||
| @@ -3,11 +3,14 @@ import App from './App.vue' | |||
| 3 | import router from './router' | 3 | import router from './router' |
| 4 | import store from './store' | 4 | import store from './store' |
| 5 | import Axios from 'axios' | 5 | import Axios from 'axios' |
| 6 | import Notifications from 'vue-notification' | ||
| 6 | 7 | ||
| 7 | Vue.config.productionTip = false | 8 | Vue.config.productionTip = false |
| 8 | 9 | ||
| 9 | Axios.defaults.headers.common['Authorization'] = store.state.token !== "" && `Token ${store.state.token}`; | 10 | Axios.defaults.headers.common['Authorization'] = store.state.token !== "" && `Token ${store.state.token}`; |
| 10 | 11 | ||
| 12 | Vue.use(Notifications) | ||
| 13 | |||
| 11 | new Vue({ | 14 | new Vue({ |
| 12 | router, | 15 | router, |
| 13 | store, | 16 | store, |
diff --git a/src/services/AuthService.js b/src/services/AuthService.js index 626a8fb..402d196 100644 --- a/src/services/AuthService.js +++ b/src/services/AuthService.js | |||
| @@ -1,17 +1,47 @@ | |||
| 1 | import axios from "axios"; | 1 | import axios from "axios"; |
| 2 | import Vue from 'vue' | ||
| 2 | 3 | ||
| 3 | const url = 'http://localhost:8000/api/auth/' | 4 | const url = 'http://localhost:8000/api/auth/' |
| 4 | 5 | ||
| 6 | const error_notify = (error) => { | ||
| 7 | for (const [key, values] of Object.entries(error.response.data)) { | ||
| 8 | values.forEach(value => { | ||
| 9 | Vue.notify({ | ||
| 10 | type: 'error', | ||
| 11 | title: value, | ||
| 12 | text: key | ||
| 13 | }) | ||
| 14 | }) | ||
| 15 | } | ||
| 16 | return { | ||
| 17 | data: error.response.data, | ||
| 18 | status: error.response.status | ||
| 19 | } | ||
| 20 | } | ||
| 21 | |||
| 5 | export default { | 22 | export default { |
| 6 | async login(data) { | 23 | async login(data) { |
| 7 | return await axios | 24 | return await axios |
| 8 | .post(url+'login/', data) | 25 | .post(url+'login/', data) |
| 9 | .then(res => res.data) | 26 | .then(res => { |
| 27 | return { | ||
| 28 | data: res.data, | ||
| 29 | status: res.status | ||
| 30 | } | ||
| 31 | }) | ||
| 32 | .catch(error => error_notify(error)) | ||
| 10 | }, | 33 | }, |
| 11 | 34 | ||
| 12 | async register(data) { | 35 | async register(data) { |
| 13 | return await axios | 36 | return await axios |
| 14 | .post(url+'register/', data) | 37 | .post(url+'register/', data) |
| 15 | .then(res => res.data) | 38 | .then(res => { |
| 39 | return { | ||
| 40 | data: res.data, | ||
| 41 | status: res.status | ||
| 42 | } | ||
| 43 | }) | ||
| 44 | .catch(error => error_notify(error)) | ||
| 45 | |||
| 16 | } | 46 | } |
| 17 | } \ No newline at end of file | 47 | } \ No newline at end of file |
diff --git a/src/views/Home.vue b/src/views/Home.vue index e5b446b..5a2a903 100644 --- a/src/views/Home.vue +++ b/src/views/Home.vue | |||
| @@ -16,7 +16,7 @@ export default { | |||
| 16 | 16 | ||
| 17 | computed: { | 17 | computed: { |
| 18 | get_username() { | 18 | get_username() { |
| 19 | return this.$store.getters.get_user.username | 19 | return this.$store.getters['get_user'].username |
| 20 | } | 20 | } |
| 21 | }, | 21 | }, |
| 22 | 22 | ||
diff --git a/src/views/Login.vue b/src/views/Login.vue index ae43ecd..cb5c8d8 100644 --- a/src/views/Login.vue +++ b/src/views/Login.vue | |||
| @@ -6,9 +6,8 @@ | |||
| 6 | 6 | ||
| 7 | <input type="submit" value="Login!"> | 7 | <input type="submit" value="Login!"> |
| 8 | </form> | 8 | </form> |
| 9 | <p v-for="(mess, key) in messages" :key="key">{{mess}}</p> | ||
| 10 | 9 | ||
| 11 | <router-link to="/register"> Still don't have account? </router-link> | 10 | <router-link to="/register"> Still don't have an account? </router-link> |
| 12 | 11 | ||
| 13 | </div> | 12 | </div> |
| 14 | </template> | 13 | </template> |
| @@ -21,25 +20,27 @@ export default { | |||
| 21 | return { | 20 | return { |
| 22 | login: "", | 21 | login: "", |
| 23 | password: "", | 22 | password: "", |
| 24 | messages: [] | ||
| 25 | } | 23 | } |
| 26 | }, | 24 | }, |
| 27 | methods: { | 25 | methods: { |
| 28 | async log_in(e) { | 26 | async log_in(e) { |
| 29 | e.preventDefault() | 27 | e.preventDefault() |
| 30 | 28 | ||
| 31 | const data = { | 29 | const login_data = { |
| 32 | "username": this.login, | 30 | "username": this.login, |
| 33 | "password": this.password | 31 | "password": this.password |
| 34 | } | 32 | } |
| 35 | try{ | 33 | |
| 36 | const res = await AuthService.login(data) | 34 | const {data, status} = await AuthService.login(login_data) |
| 37 | this.$store.dispatch('login', {token: res.token, user: res.user}) | 35 | |
| 38 | this.$router.push('/') | 36 | if (status === 200) { |
| 39 | } catch (error) { | 37 | this.$store.dispatch('login', {token: data.token, user: data.user}) |
| 40 | console.log(error.response.data) | 38 | this.$notify({ |
| 41 | this.messages.push('Wrong username or password!') | 39 | type: 'success', |
| 42 | } | 40 | text: 'Success!' |
| 41 | }) | ||
| 42 | this.$router.push('/') | ||
| 43 | } | ||
| 43 | } | 44 | } |
| 44 | }, | 45 | }, |
| 45 | created() { | 46 | created() { |
diff --git a/src/views/Register.vue b/src/views/Register.vue index c03f5fd..eb382c5 100644 --- a/src/views/Register.vue +++ b/src/views/Register.vue | |||
| @@ -7,9 +7,8 @@ | |||
| 7 | 7 | ||
| 8 | <input type="submit" value="Register!"> | 8 | <input type="submit" value="Register!"> |
| 9 | </form> | 9 | </form> |
| 10 | <p v-for="(mess, key) in messages" :key="key">{{mess}}</p> | ||
| 11 | 10 | ||
| 12 | <router-link to="/login">Already have account?</router-link> | 11 | <router-link to="/login">Already have an account?</router-link> |
| 13 | 12 | ||
| 14 | </div> | 13 | </div> |
| 15 | </template> | 14 | </template> |
| @@ -23,7 +22,6 @@ export default { | |||
| 23 | login: "", | 22 | login: "", |
| 24 | password: "", | 23 | password: "", |
| 25 | repeat_password: "", | 24 | repeat_password: "", |
| 26 | messages: [] | ||
| 27 | } | 25 | } |
| 28 | }, | 26 | }, |
| 29 | methods: { | 27 | methods: { |
| @@ -32,27 +30,28 @@ export default { | |||
| 32 | 30 | ||
| 33 | e.preventDefault() | 31 | e.preventDefault() |
| 34 | if(this.password !== this.repeat_password){ | 32 | if(this.password !== this.repeat_password){ |
| 35 | this.messages.push("Passwords not equals") | 33 | this.$notify({ |
| 34 | type: 'warn', | ||
| 35 | text: 'Passwords not equals', | ||
| 36 | }) | ||
| 36 | this.password = "" | 37 | this.password = "" |
| 37 | this.repeat_password = "" | 38 | this.repeat_password = "" |
| 38 | 39 | ||
| 39 | return null | 40 | return null |
| 40 | } | 41 | } |
| 41 | 42 | ||
| 42 | const data = { | 43 | const register_data = { |
| 43 | "username": this.login, | 44 | "username": this.login, |
| 44 | "password": this.password | 45 | "password": this.password |
| 45 | } | 46 | } |
| 46 | 47 | ||
| 47 | try { | 48 | const { status } = await AuthService.register(register_data) |
| 48 | await AuthService.register(data) | 49 | if (status === 200) { |
| 49 | this.messages.push("Success!") | 50 | this.$notify({ |
| 50 | }catch (error) { | 51 | type: 'success', |
| 51 | if(error.response.data.username) | 52 | text:'Register success, you can now login.!' |
| 52 | this.messages.push(error.response.data.username[0]) | 53 | }) |
| 53 | if (error.response.data.password) | 54 | this.$router.push('/login') |
| 54 | this.messages.push(error.response.data.password[0]) | ||
| 55 | |||
| 56 | } | 55 | } |
| 57 | } | 56 | } |
| 58 | }, | 57 | }, |
