[rejestracja] [logowanie] szyfrowanie hasel jak w django

This commit is contained in:
pawlaczyk 2019-01-09 06:33:30 +01:00
parent 196dfca658
commit 2f58eb4542
4 changed files with 45 additions and 14 deletions

View File

@ -31,7 +31,7 @@
"login": "A" "login": "A"
} }
#"[addNewUserView][Error] Nie podano hasła" #"[addNewUserView][Error] Nie podano hasła"
################################################################
127.0.0.1:3000/api/updateUserPointsView 127.0.0.1:3000/api/updateUserPointsView
{ {
@ -53,5 +53,20 @@
#"[updateUserPointsView][Error] Brak uzytkownika w bazie" #"[updateUserPointsView][Error] Brak uzytkownika w bazie"
################################################################
127.0.0.1:3000/api/loginUserView
{
"login": "B2",
"password": "B",
"test": "test"
}
#true
{
"login": "B2",
"password": "B2",
"test": "test"
}
#false

View File

@ -5,6 +5,7 @@ import (
"fmt" "fmt"
_ "github.com/go-sql-driver/mysql" _ "github.com/go-sql-driver/mysql"
"golang.org/x/crypto/bcrypt"
) )
func connectMysql() (*sql.DB, error) { func connectMysql() (*sql.DB, error) {
@ -20,13 +21,18 @@ func addUser(_login string, _password string, _userDescription string) error {
//do rejestracji uzytkownika //do rejestracji uzytkownika
// Insert do bazy Mysql Nowego użytkownika // Insert do bazy Mysql Nowego użytkownika
db, err := connectMysql() password := []byte(_password) //zamiana stringa na bajty dla funckji hashujacej
db, err := connectMysql()
if err != nil { if err != nil {
panic(err.Error()) panic(err.Error())
return err return err
} }
// Hashing the password with the default cost of 10
hashedPassword, err := bcrypt.GenerateFromPassword(password, bcrypt.DefaultCost)
encryptedPassword := string(hashedPassword)
queryInsert := fmt.Sprintf(`INSERT INTO users ( queryInsert := fmt.Sprintf(`INSERT INTO users (
login, login,
password, password,
@ -37,7 +43,7 @@ func addUser(_login string, _password string, _userDescription string) error {
"%s", "%s",
"%s", "%s",
"%d" "%d"
)`, _login, _password, _userDescription, 0) //przy rejestracji kzdy ma 0 punktow )`, _login, encryptedPassword, _userDescription, 0) //przy rejestracji kzdy ma 0 punktow
fmt.Printf(queryInsert) fmt.Printf(queryInsert)
insert, err := db.Query(queryInsert) insert, err := db.Query(queryInsert)
@ -118,7 +124,8 @@ func checkLoginExists(_login string) (bool, error) {
func loginUser(_login string, _password string) (bool, error) { func loginUser(_login string, _password string) (bool, error) {
//do logowanie w bazie //do logowanie w bazie
db, err := connectMysql() db, err := connectMysql()
querySelect := fmt.Sprintf(`SELECT login FROM users WHERE login='%s' AND password='%s' ;`, _login, _password)
querySelect := fmt.Sprintf(`SELECT password FROM users WHERE login='%s' ;`, _login)
result, err := db.Query(querySelect) result, err := db.Query(querySelect)
if err != nil { if err != nil {
@ -127,15 +134,17 @@ func loginUser(_login string, _password string) (bool, error) {
} }
for result.Next() { for result.Next() {
var userLogin string var hashedPassword string
err = result.Scan(&userLogin) err = result.Scan(&hashedPassword)
if err != nil { if err != nil {
panic(err.Error()) panic(err.Error())
return false, err return false, err
} }
if userLogin != "" { // Comparing the password with the hash
err = bcrypt.CompareHashAndPassword([]byte(hashedPassword), []byte(_password))
if err == nil { // nil means it is a match
return true, nil return true, nil
} }
} }

Binary file not shown.

View File

@ -5,6 +5,7 @@ import (
"net/http" "net/http"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
// go get "golang.org/x/crypto/bcrypt"
) )
func getUsersView(c *gin.Context) { func getUsersView(c *gin.Context) {
@ -62,14 +63,20 @@ func addNewUserView(c *gin.Context) {
if isExists { if isExists {
c.JSON(http.StatusOK, "Login zajęty") c.JSON(http.StatusOK, "Login zajęty")
return return
} else { }
if err != nil {
c.JSON(http.StatusOK, "[addNewUserView][Error] Nie mozna zaszyfrowac hasla")
return
}
err = addUser(_login, _password, _userDescription) err = addUser(_login, _password, _userDescription)
if err != nil { if err != nil {
c.JSON(http.StatusOK, "[addNewUserView][Error] Nie mozna dodac do bazy") c.JSON(http.StatusOK, "[addNewUserView][Error] Nie mozna dodac do bazy")
return return
} }
}
c.Header("Content-Type", "application/json") c.Header("Content-Type", "application/json")
c.JSON(http.StatusOK, "[addNewUserView] Dodano uzytkownika do bazy") c.JSON(http.StatusOK, "[addNewUserView] Dodano uzytkownika do bazy")
} }