Pboieranie z Go na front tokenu JWT

This commit is contained in:
pawlaczyk 2019-01-12 20:42:29 +01:00
parent a624045281
commit 5559e8ace6
5 changed files with 56 additions and 16 deletions

View File

@ -2,7 +2,7 @@ package main
//Uruchomienie na windowsie //Uruchomienie na windowsie
// go run main.go connector_couchdb.go connector_mysql.go models.go views.go // go run main.go connector_couchdb.go connector_mysql.go models.go views.go
//go run main.go connector_couchdb.go connector_mysql.go models.go views.go tokens.go
import ( import (
"net/http" "net/http"

View File

@ -10,6 +10,7 @@ import (
var mySigningKey = []byte("DoTokenowDlaUszytkownikow") var mySigningKey = []byte("DoTokenowDlaUszytkownikow")
func GenerateJWT(_login string) (string, error) { func GenerateJWT(_login string) (string, error) {
//generowanie tokena jwt
token := jwt.New(jwt.SigningMethodHS256) token := jwt.New(jwt.SigningMethodHS256)
claims := token.Claims.(jwt.MapClaims) claims := token.Claims.(jwt.MapClaims)
@ -26,10 +27,10 @@ func GenerateJWT(_login string) (string, error) {
return tokenString, nil return tokenString, nil
} }
func isTokenValid() bool, error{ func isTokenValid(tokenString string) (bool, error) {
//sprawdza czy podany token jest pawidlowy //sprawdza czy podany token jest pawidlowy
if r.Header["Token"] != nil { if tokenString != "" { //JWT Parse przyjmuje stroinga, bo header norlanie jest lista, a ja mu tu wyluskane stringa dam
token, err := jwt.Parse(r.Header["Token"][0], func(token *jwt.Token) (interface{}, error) { //sprawdzanie tokena token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) { //sprawdzanie tokena
if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok { if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
return nil, fmt.Errorf("There was an error ") return nil, fmt.Errorf("There was an error ")
} }
@ -45,13 +46,13 @@ func isTokenValid() bool, error{
if token.Valid { if token.Valid {
//jesli token prawidlowy, to zwraca true //jesli token prawidlowy, to zwraca true
return true, nil return true, nil
}else{ } else {
fmt.Println("[isTokenValid] Nieprawidłowy token") fmt.Println("[isTokenValid] Nieprawidłowy token")
return false, nil return false, nil
} }
} }
return false, nil
} }

View File

@ -109,21 +109,35 @@ func loginUserView(c *gin.Context) {
fmt.Println("_token: ", _token) fmt.Println("_token: ", _token)
if _login == "" { if _login == "" {
c.JSON(http.StatusOK, "[loginUserView][Error] Nie podano loginu") // c.JSON(http.StatusOK, "[loginUserView][Error] Nie podano loginu")
c.JSON(http.StatusOK, false)
} }
if _password == "" { if _password == "" {
c.JSON(http.StatusOK, "[loginUserView][Error] Nie podano hasła") // c.JSON(http.StatusOK, "[loginUserView][Error] Nie podano hasła")
c.JSON(http.StatusOK, false)
} }
validLoginData, err := loginUser(_login, _password) validLoginData, err := loginUser(_login, _password)
if err != nil { if err != nil {
c.JSON(http.StatusOK, "[loginUserView][Error] Nie mozna zalogowac") // c.JSON(http.StatusOK, "[loginUserView][Error] Nie mozna zalogowac")
c.JSON(http.StatusOK, false)
} }
c.JSON(http.StatusOK, validLoginData) //true jak zalogowano if validLoginData { //jezeli zwortic true - poprawne dane to generuje tokena
tokenString, err := GenerateJWT(_login) //generowanie tokenu dla dane uzytkownika
if err != nil { //jezeli jest bład
// c.JSON(http.StatusOK, "[loginUserView][Error] Nie mozna wygenerowac tokenu")
c.JSON(http.StatusOK, false)
}
c.JSON(http.StatusOK, tokenString) //zwraca token jak zalogowano
} else {
c.JSON(http.StatusOK, false) //zwraca token jak zalogowano
}
} }
func updateUserPointsView(c *gin.Context) { func updateUserPointsView(c *gin.Context) {

View File

@ -1,5 +1,6 @@
import Vue from 'vue'; import Vue from 'vue';
import Vuex from 'vuex'; import Vuex from 'vuex';
// import axios from 'axios';
Vue.use(Vuex); Vue.use(Vuex);
@ -13,6 +14,24 @@ export const store = new Vuex.Store({
// { icon: 'get_app', text: 'Zaloguj', route: '/login'}, // { icon: 'get_app', text: 'Zaloguj', route: '/login'},
// { icon: 'account_circle', text: 'Rejestracja', route: '/register'}, // { icon: 'account_circle', text: 'Rejestracja', route: '/register'},
], ],
userToken : "" // userToken : null // na przechoywanie tokena z GO dla usera
token: null,
user: null
},
getters:{
userToken: state => {//getter do pobieranie user tokena
var userToken = state.token.map(token => {
return {
token
}
});
return userToken;
}
},
mutations: {
LOGIN_SUCCESS(state, response) {
state.token = response;
}
} }
}) })

View File

@ -67,11 +67,16 @@ export default {
{"login": this.userLogin, "password": this.userPassword, "TokenZJS": "Ala"}, {"login": this.userLogin, "password": this.userPassword, "TokenZJS": "Ala"},
{ crossdomain: true }) { crossdomain: true })
.then(response=>{ .then(response=>{
console.log(response.data); console.log("Response data: ", response.data); //printuje Tokena
if (response.data == true){
if (response.data){
console.log("Dostał tokena")
this.$store.commit('LOGIN_SUCCESS', response.data)
console.log("DANE Z VUEXA DLA USERA")
console.log(this.$store.state.token) //pokazuje ze zapisał tokena
window.location.replace("http://localhost:8080/game"); window.location.replace("http://localhost:8080/game");
} }
else{ else{ //coś poszło nie tak
console.log("Zły lolgin") console.log("Zły lolgin")
this.snackbar = true this.snackbar = true
this.userLogin = '' this.userLogin = ''
@ -83,6 +88,7 @@ export default {
}); });
}//dlugi if }//dlugi if
this.userLogin = '' this.userLogin = ''
this.userPassword = '' this.userPassword = ''