Dodanie stanu wylogowania i zaloowania do bazy mysql

This commit is contained in:
pawlaczyk 2019-01-13 01:26:13 +01:00
parent b782f39ed8
commit 542320f496
9 changed files with 184 additions and 16 deletions

View File

@ -70,7 +70,7 @@ func getAllUsers() []User {
for result.Next() {
var user User
err = result.Scan(&user.UserId, &user.Login, &user.Password, &user.UserDescription, &user.Points)
err = result.Scan(&user.UserId, &user.Login, &user.Password, &user.UserDescription, &user.Points, &user.IsLogged)
if err != nil {
panic(err.Error())
}
@ -176,3 +176,76 @@ func updateUserPoints(_login string) error {
return nil //jak bez bledow wszystko
}
func getAllLoggedUsers() ([]string, error) {
//pobieranie listy obiektow zalogowanych uzytkownikow
db, err := connectMysql()
loggedUsers := make([]string, 0)
result, err := db.Query("SELECT * FROM users WHERE isLogged = true;")
if err != nil {
panic(err.Error())
fmt.Println("[getAllLoggedUsers] [Error] %s", err)
return nil, err // zwraca nula jak nie uda sie pobrac listy loginow
}
for result.Next() {
var user User
err = result.Scan(&user.UserId, &user.Login, &user.Password, &user.UserDescription, &user.Points, &user.IsLogged)
if err != nil {
panic(err.Error())
return nil, err // zwraca nula jak nie uda sie pobrac listy loginow
fmt.Println("[getAllLoggedUsers] [Error] %s", err)
}
fmt.Println(user)
loggedUsers = append(loggedUsers, user.Login)
}
fmt.Println("Wszyscy zalogowani: ", loggedUsers)
return loggedUsers, nil // zwraca nula jak nie uda sie pobrac listy loginow
}
func updateLoggedUser(_login string) error {
//aktualizuje stan uzytkownika na zalogowanego
db, err := connectMysql()
if err != nil {
panic(err.Error())
fmt.Println("[updateLoggedUser] [Error] %s", err)
return err
}
updateLogin := fmt.Sprintf(`UPDATE users SET isLogged=true WHERE login='%s' ;`, _login)
_, err = db.Query(updateLogin)
if err != nil {
panic(err.Error())
fmt.Println("[getAllLoggedUsers] [Error] %s", err)
return err
}
return nil
}
func updateLogoutUser(_login string) error {
//aktualizuje stan na false jak sie uzytkownik wyloguje
db, err := connectMysql()
if err != nil {
panic(err.Error())
fmt.Println("[updateLoggedUser] [Error] Nie udało polaczy sie z baza")
return err
}
updateLogout := fmt.Sprintf(`UPDATE users SET isLogged=false WHERE login='%s' ;`, _login)
_, err = db.Query(updateLogout)
if err != nil {
panic(err.Error())
fmt.Println("[getAllLoggedUsers] [Error] Nie udalo sie zaktulizowac wylogowanego uzytkownika")
return err
}
return nil
}

View File

@ -58,6 +58,9 @@ func main() {
api.POST("/loginUserView", loginUserView) //logowanie
api.POST("/updateUserPointsView", updateUserPointsView) // inkrementacja punktow
api.POST("/addNewCardView", addNewCardView) // [couchdb] dodawanie nowej karty
api.POST("/getAllLoggedUsersView", getAllLoggedUsersView) // [mysql] pobieranie listy zalogowanych uzytkownikow
api.POST("/updateLoggedUserView", updateLoggedUserView) //aktualizacja ze uzytkownik zalogowany
api.POST("/updateLogoutUserView", updateLogoutUserView) //aktualizacja stanu jak uzytkownik sie wyloguje
// Start and run the server
router.Run(":3000")

View File

@ -21,6 +21,7 @@ type User struct {
UserDescription string `json:"userDescription"`
Points int `json:points`
Token string
IsLogged bool
}
// Structura karty

View File

@ -179,13 +179,6 @@ func addNewCardView(c *gin.Context) {
//PATRZ: documentation/couchdb/local.ini; documentation/couchdb/corsy_ustawienie.txt
c.Header("Content-Type", "application/json")
fmt.Println("-------------------- ADD NEW CARD ----------------------------------------------")
fmt.Println("------------------------------------------------------------------")
fmt.Println("------------------------------------------------------------------")
fmt.Println("------------------------------------------------------------------")
fmt.Println("------------------------------------------------------------------")
fmt.Println("------------------------------------------------------------------")
fmt.Println("------------------------------------------------------------------")
var newCard Card
c.Bind(&newCard)
_isQuestion := newCard.IsQuestion
@ -210,3 +203,52 @@ func addNewCardView(c *gin.Context) {
c.JSON(http.StatusOK, "[addNewCardView] Dodano nową kartę")
}
func getAllLoggedUsersView(c *gin.Context) {
fmt.Println("Zwracanie wszystkich zalogowanych uzytkownikow")
allLoggedUsers, err := getAllLoggedUsers()
if err != nil {
fmt.Println("[getAllLoggedUsersView] [Error] %s", err)
c.JSON(http.StatusOK, gin.H{
"code": http.StatusOK,
"allLoggedUsers": allLoggedUsers, // cast it to string before showing
})
} else {
c.JSON(http.StatusOK, gin.H{
"code": http.StatusOK,
"allLoggedUsers": nil, // cast it to string before showing
})
}
}
func updateLoggedUserView(c *gin.Context) {
var loggedUser User //login zalogowane uzytkownika
c.Bind(&loggedUser)
_login := loggedUser.Login
err := updateLoggedUser(_login)
if err != nil {
c.JSON(http.StatusOK, "[updateLoggedUserView] Nie udalo sie zaktualizowac zalogowanego uzytkownika")
return
}
c.JSON(http.StatusOK, true) //true jak sie udalo zaktualizowac
}
func updateLogoutUserView(c *gin.Context) {
var logoutUser User //login zalogowane uzytkownika
c.Bind(&logoutUser)
_login := logoutUser.Login
err := updateLogoutUser(_login)
if err != nil {
c.JSON(http.StatusOK, "[updateLoggedUserView] Nie udalo sie zaktualizowac wylogowanego uzytkownika")
return
}
c.JSON(http.StatusOK, true) //true jak sie udalo zaktualizowac
}
func getGentelman(c *gin.Context) {
//zwraca login aktualnego gentelamana
}

View File

@ -0,0 +1,14 @@
---------------------MYSQL----------------------
Tabela użytkowników, gdzie login jest unikalny
CREATEA DATABASE golang_users;
USE golang_users;
CREATE TABLE users(
userID int AUTO_INCREMENT PRIMARY KEY,
login Varchar(30),
password Varchar(250),
userDescription Varchar(250),
points INT DEFAULT 0,
isLogged bool DEFAULT FALSE,
UNIQUE (login)
)

View File

@ -117,6 +117,8 @@ export default {
if(this.isLogged){
this.snackbarLogout = true
this.isLogged = false
this.$store.dispatch('removeLoggedUser', localStorage.getItem('user'))
console.log("wylogowano")
localStorage.setItem('token',null);
localStorage.setItem('user', null);

View File

@ -14,5 +14,32 @@ export const store = new Vuex.Store({
// { icon: 'get_app', text: 'Zaloguj', route: '/login'},
// { icon: 'account_circle', text: 'Rejestracja', route: '/register'},
],
allLoggedUsers:[]
},
getters:{
allUsers: state => {
return state.allLoggedUsers
}
},
mutations:{
//usuwanie po wylogowaniu
removeLoggedUser: (state, payloadUser)=> {
var elementId = state.allLoggedUsers.indexOf(payloadUser) //znajdowanie id elementu do usuniecia
delete state.allLoggedUsers[elementId] //usuwanie kontkretnego loginu
},
//dodawanie nowego zalogowanego uzytkownika
addLoggedUser: (state, payloadUser)=> {
state.allLoggedUsers.push(payloadUser)
}
},
actions:{
addLoggedUser: (context, payloadUser) =>{
context.commit('addLoggedUser', payloadUser)
},
removeLoggedUser: (context, payloadUser) =>{
context.commit('removeLoggedUser', payloadUser)
}
}
})

View File

@ -101,6 +101,9 @@ export default {
}
console.log("LOCAL STOARAGE: ", localStorage.getItem('token'))
console.log("LOCAL STOARAGE User: ", localStorage.getItem('user'))
console.log("Wszyscy uzytkownicy: ", this.$store.getters.allUsers)
}
}
</script>

View File

@ -79,12 +79,15 @@ export default {
var local = localStorage.getItem('token');
var localU = localStorage.getItem('user');
//dodanie loginu do listy wszystkich zalogowanych użytkowników
this.$store.dispatch('addLoggedUser', localStorage.getItem('user'))
console.log("Wszyscy uzytkownicy: ", this.$store.getters.allUsers)
console.log("LOCAL STOARAGE: ", local)
console.log("LOCAL STOARAGE User: ", localU)
this.$router.push('game')
// router.push({name: "/game"}) //przekierowanie dla one sigle page application window.location.replace("http://localhost:8080/game");
this.$router.push('game') //przekierowanie dla one sigle page application window.location.replace("http://localhost:8080/game");
}
else{ //coś poszło nie tak