123456789101112131415161718192021222324252627282930313233343536373839 |
- package main
- import (
- "github.com/ant0ine/go-json-rest/rest"
- "github.com/tv42/zbase32"
- "golang.org/x/crypto/bcrypt"
- "net/http"
- )
- type User struct {
- Login string
- Password string
- }
- func regHandler() http.Handler {
- api := rest.NewApi()
- api.Use(rest.DefaultDevStack...)
- router, _ := rest.MakeRouter(rest.Post("/user", func(resp rest.ResponseWriter, req *rest.Request) {
- user := &User{}
- if err := req.DecodeJsonPayload(user); err == nil {
- if user.Login != "" && user.Password != "" {
- if _, err := KV.Read(user.Login); err != nil {
- pwd, _ := bcrypt.GenerateFromPassword([]byte(user.Password), bcrypt.DefaultCost)
- KV.Write(zbase32.EncodeToString([]byte(user.Login)), pwd)
- } else {
- rest.Error(resp, "wrong user", 400)
- }
- } else {
- rest.Error(resp, "empty data", 400)
- }
- } else {
- rest.Error(resp, "wrong data", 400)
- }
- }))
- api.SetApp(router)
- return api.MakeHandler()
- }
|