diff --git a/config/config.go b/config/config.go index 26e731c..deeb991 100644 --- a/config/config.go +++ b/config/config.go @@ -3,6 +3,7 @@ package config import ( "github.com/BurntSushi/toml" "github.com/kirsle/configdir" + "golang.org/x/crypto/bcrypt" "path/filepath" ) @@ -79,3 +80,9 @@ func init() { func GetConfig() Config { return config } + +func CheckPassword(pass string) bool { + err := bcrypt.CompareHashAndPassword([]byte(config.Password), []byte(pass)) + + return err == nil +} diff --git a/go.mod b/go.mod index e35827d..22bb912 100644 --- a/go.mod +++ b/go.mod @@ -6,6 +6,7 @@ require ( github.com/BurntSushi/toml v1.2.1 github.com/gofiber/fiber/v2 v2.42.0 github.com/kirsle/configdir v0.0.0-20170128060238-e45d2f54772f + golang.org/x/crypto v0.0.0-20220214200702-86341886e292 ) require ( diff --git a/go.sum b/go.sum index 92dd364..526a398 100644 --- a/go.sum +++ b/go.sum @@ -37,6 +37,7 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20220214200702-86341886e292 h1:f+lwQ+GtmgoY+A2YaQxlSOnDjXcQ7ZRLWOHbC6HtRqE= golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= diff --git a/main.go b/main.go index 24d1b47..b7ada71 100644 --- a/main.go +++ b/main.go @@ -7,12 +7,25 @@ import ( "github.com/gofiber/fiber/v2" ) +type passReq struct { + Pass string `json:"pass"` +} + func main() { app := fiber.New() - config := config.GetConfig() + conf := config.GetConfig() app.Get("/", func(c *fiber.Ctx) error { - return c.JSON(&config) + return c.JSON(&conf) + }) + + app.Post("/check_pass", func(c *fiber.Ctx) error { + req := new(passReq) + if err := c.BodyParser(req); err != nil { + panic(err) + } + + return c.JSON(config.CheckPassword(req.Pass)) }) log.Fatal(app.Listen(":3000"))