diff options
author | Alexander NeonXP Kiryukhin <i@neonxp.ru> | 2024-07-29 02:47:35 +0300 |
---|---|---|
committer | Alexander NeonXP Kiryukhin <i@neonxp.ru> | 2024-07-29 02:47:35 +0300 |
commit | 96e2ce2e9d363a6296f9411ecb00168520258874 (patch) | |
tree | 09aa7fffe10eab84ae0edd39e570355984ba0148 /routes | |
parent | 12ed72e4e1da181a6c87319a50d3b4142788b4c0 (diff) |
Отказ от echo
Diffstat (limited to 'routes')
-rw-r--r-- | routes/node.go | 129 | ||||
-rw-r--r-- | routes/requests.go | 21 | ||||
-rw-r--r-- | routes/routes.go | 17 | ||||
-rw-r--r-- | routes/user.go | 86 |
4 files changed, 0 insertions, 253 deletions
diff --git a/routes/node.go b/routes/node.go deleted file mode 100644 index e8aa455..0000000 --- a/routes/node.go +++ /dev/null @@ -1,129 +0,0 @@ -package routes - -import ( - "fmt" - "net/http" - "strconv" - - "github.com/labstack/echo/v4" - "gitrepo.ru/neonxp/gorum/contextlib" - "gitrepo.ru/neonxp/gorum/models" - "gitrepo.ru/neonxp/gorum/utils" - "gitrepo.ru/neonxp/gorum/views" -) - -func (r *Router) Node(c echo.Context) error { - sParentID := c.Param("id") - parentID := 0 - var err error - if sParentID != "" { - parentID, err = strconv.Atoi(sParentID) - if err != nil { - return err - } - } - - node := &models.Node{ - ID: 0, - Text: "Gorum", - } - if parentID > 0 { - node, err = r.nodeRepo.Get(c.Request().Context(), parentID) - if err != nil { - return err - } - } - - nodes, err := r.nodeRepo.List(c.Request().Context(), parentID) - if err != nil { - return err - } - - topics := make([]*models.Node, 0, len(nodes)) - posts := make([]*models.Node, 0, len(nodes)) - for _, n := range nodes { - switch n.Type { - case models.PostType: - posts = append(posts, n) - case models.TopicType: - topics = append(topics, n) - } - } - - return utils.Render(c, views.Node(node, topics, posts)) -} - -func (r *Router) NewPost(c echo.Context) error { - req := new(nodeRequest) - if err := c.Bind(req); err != nil { - return err - } - user := contextlib.GetUser(c.Request().Context()) - if user == nil { - return echo.ErrForbidden - } - sParentID := c.Param("id") - parentID, err := strconv.Atoi(sParentID) - if err != nil { - return err - } - - if c.Request().Method == http.MethodPost { - postID, err := r.nodeRepo.Create(c.Request().Context(), req.Type, req.Text, user.ID, parentID) - if err != nil { - return err - } - - return c.Redirect(302, fmt.Sprintf("/t/%d#post%d", parentID, postID)) - } - - node := &models.Node{ - ID: 0, - Text: "Gorum", - } - if parentID > 0 { - node, err = r.nodeRepo.Get(c.Request().Context(), parentID) - if err != nil { - return err - } - } - - return utils.Render(c, views.NewPost(node)) -} -func (r *Router) NewTopic(c echo.Context) error { - req := new(nodeRequest) - if err := c.Bind(req); err != nil { - return err - } - user := contextlib.GetUser(c.Request().Context()) - if user == nil { - return echo.ErrForbidden - } - sParentID := c.Param("id") - parentID, err := strconv.Atoi(sParentID) - if err != nil { - return err - } - - if c.Request().Method == http.MethodPost { - postID, err := r.nodeRepo.Create(c.Request().Context(), req.Type, req.Text, user.ID, parentID) - if err != nil { - return err - } - - return c.Redirect(302, fmt.Sprintf("/t/%d", postID)) - } - - node := &models.Node{ - ID: 0, - Text: "Gorum", - } - if parentID > 0 { - node, err = r.nodeRepo.Get(c.Request().Context(), parentID) - if err != nil { - return err - } - } - - return utils.Render(c, views.NewTopic(node)) -} diff --git a/routes/requests.go b/routes/requests.go deleted file mode 100644 index a0bc13f..0000000 --- a/routes/requests.go +++ /dev/null @@ -1,21 +0,0 @@ -package routes - -import "gitrepo.ru/neonxp/gorum/models" - -type loginRequest struct { - Email string `form:"email"` - Password string `form:"password"` - Remember string `form:"remember"` -} - -type registerRequest struct { - Username string `form:"username"` - Email string `form:"email"` - Password string `form:"password"` - Password2 string `form:"password2"` -} - -type nodeRequest struct { - Type models.NodeType `form:"type"` - Text string `form:"text"` -} diff --git a/routes/routes.go b/routes/routes.go deleted file mode 100644 index 835991a..0000000 --- a/routes/routes.go +++ /dev/null @@ -1,17 +0,0 @@ -package routes - -import ( - "gitrepo.ru/neonxp/gorum/repository" -) - -type Router struct { - userRepo *repository.User - nodeRepo *repository.Node -} - -func NewRouter(userRepo *repository.User, nodeRepo *repository.Node) *Router { - return &Router{ - userRepo: userRepo, - nodeRepo: nodeRepo, - } -} diff --git a/routes/user.go b/routes/user.go deleted file mode 100644 index dd5bd61..0000000 --- a/routes/user.go +++ /dev/null @@ -1,86 +0,0 @@ -package routes - -import ( - "log" - "net/http" - - "github.com/gorilla/sessions" - "github.com/labstack/echo-contrib/session" - "github.com/labstack/echo/v4" - "gitrepo.ru/neonxp/gorum/models" - "gitrepo.ru/neonxp/gorum/utils" - "gitrepo.ru/neonxp/gorum/views" -) - -func (r *Router) Login(c echo.Context) error { - req := new(loginRequest) - if err := c.Bind(req); err != nil { - return err - } - if c.Request().Method == http.MethodPost { - u, err := r.userRepo.Login(c.Request().Context(), req.Email, req.Password) - if err != nil { - return err - } - sess, err := session.Get("session", c) - if err != nil { - return err - } - maxAge := 0 - if req.Remember == "on" { - maxAge = 86400 * 14 - } - sess.Options = &sessions.Options{ - Path: "/", - MaxAge: maxAge, - HttpOnly: true, - } - sess.Values["user"] = *u - if err := sess.Save(c.Request(), c.Response()); err != nil { - return err - } - - return c.Redirect(302, "/") - } - - return utils.Render(c, views.Login(req.Email)) -} - -func (r *Router) Logout(c echo.Context) error { - sess, err := session.Get("session", c) - if err != nil { - return err - } - sess.Options = &sessions.Options{ - Path: "/", - MaxAge: -1, - HttpOnly: true, - } - sess.Values["user"] = nil - if err := sess.Save(c.Request(), c.Response()); err != nil { - return err - } - if err := sess.Save(c.Request(), c.Response()); err != nil { - return err - } - - return c.Redirect(302, "/") -} - -func (r *Router) Register(c echo.Context) error { - req := new(registerRequest) - if err := c.Bind(req); err != nil { - return err - } - if c.Request().Method == http.MethodPost { - uid, err := r.userRepo.Create(c.Request().Context(), req.Email, req.Password, req.Username, models.RoleUser) - if err != nil { - return err - } - log.Println(uid) - - return c.Redirect(302, "/login") - } - - return utils.Render(c, views.Register(req.Username, req.Email)) -} |