diff --git a/backend/connector_mysql.go b/backend/connector_mysql.go index 564034e..33bfab6 100644 --- a/backend/connector_mysql.go +++ b/backend/connector_mysql.go @@ -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 + +} diff --git a/backend/main.go b/backend/main.go index febaea5..6a2acdc 100644 --- a/backend/main.go +++ b/backend/main.go @@ -53,11 +53,14 @@ func main() { }) } - api.GET("/getUsersView", getUsersView) //widok pobrania wszystkich użytkowników - api.POST("/addNewUserView", addNewUserView) // json z danymi nowego uzytkownika - api.POST("/loginUserView", loginUserView) //logowanie - api.POST("/updateUserPointsView", updateUserPointsView) // inkrementacja punktow - api.POST("/addNewCardView", addNewCardView) // [couchdb] dodawanie nowej karty + api.GET("/getUsersView", getUsersView) //widok pobrania wszystkich użytkowników + api.POST("/addNewUserView", addNewUserView) // json z danymi nowego uzytkownika + 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") diff --git a/backend/models.go b/backend/models.go index b5c7282..55bde46 100644 --- a/backend/models.go +++ b/backend/models.go @@ -21,6 +21,7 @@ type User struct { UserDescription string `json:"userDescription"` Points int `json:points` Token string + IsLogged bool } // Structura karty diff --git a/backend/views.go b/backend/views.go index 9360d6b..3b1b7e9 100644 --- a/backend/views.go +++ b/backend/views.go @@ -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 +} diff --git a/documentation/stawianie_aplikacji.txt b/documentation/stawianie_aplikacji.txt new file mode 100644 index 0000000..b0de15c --- /dev/null +++ b/documentation/stawianie_aplikacji.txt @@ -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) +) \ No newline at end of file diff --git a/frontend/app/src/components/Navbar.vue b/frontend/app/src/components/Navbar.vue index 4bb50e1..c60691a 100644 --- a/frontend/app/src/components/Navbar.vue +++ b/frontend/app/src/components/Navbar.vue @@ -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); diff --git a/frontend/app/src/store/store.js b/frontend/app/src/store/store.js index 4e6a242..fd18652 100644 --- a/frontend/app/src/store/store.js +++ b/frontend/app/src/store/store.js @@ -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) + } } }) diff --git a/frontend/app/src/views/Game.vue b/frontend/app/src/views/Game.vue index 209a89b..1deb8e9 100644 --- a/frontend/app/src/views/Game.vue +++ b/frontend/app/src/views/Game.vue @@ -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) + } } diff --git a/frontend/app/src/views/Login.vue b/frontend/app/src/views/Login.vue index 82584e3..da47793 100644 --- a/frontend/app/src/views/Login.vue +++ b/frontend/app/src/views/Login.vue @@ -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