Skip to content
This repository has been archived by the owner on Sep 11, 2020. It is now read-only.

create login and register api #27

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions .github/workflows/BuildTest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,10 @@ jobs:
name: tryToBuild
runs-on: ubuntu-latest
steps:
- name: Set up Go 1.13.x
- name: Set up Go 1.13.5
uses: actions/setup-go@v1
with:
go-version: 1.13.x
id: go
go-version: 1.13.5

- name: Check out code into the Go module directory
uses: actions/checkout@v1
Expand Down
20 changes: 20 additions & 0 deletions database/user.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package database

import (
"fmt"
"github.com/NPC-GO/MaJaJalist-backend/model"
"github.com/go-pg/pg/v9"
)

type User struct {
DB *pg.DB
}

func (u *User) GetUserByField(field, value string) (*model.User, error) {
var user model.User
err := u.DB.Model(&user).Where(fmt.Sprintf("%v = ?", field), value).First()
return &user, err
}
func (u *User) GetUserByToken(token string) (*model.User, error) {
return u.GetUserByField("token", token)
}
2 changes: 2 additions & 0 deletions gqlgen.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,5 +45,7 @@ models:
model: github.com/NPC-GO/MaJaJalist-backend/model.TodoConfig
ChangeTodoConfigValueInput:
model: github.com/NPC-GO/MaJaJalist-backend/model.ChangeTodoConfigValueInput
TodoAuthorLayout:
model: github.com/NPC-GO/MaJaJalist-backend/model.TodoAuthorLayout


25 changes: 25 additions & 0 deletions middleware/auth.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package middleware

import (
"github.com/NPC-GO/MaJaJalist-backend/database"
"net/http"
)

func BeforeLoginAuth(userDatabaseCtrl database.User) func(http.Handler) http.Handler {
return func(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
session, err := r.Cookie("session")
if err == nil {
if _, err := userDatabaseCtrl.GetUserByToken(session.Value); err == nil {
if r.Method == http.MethodGet {
http.Redirect(w, r, "https://"+r.URL.Host, 302)
return
}
http.Error(w, "you has login", 403)
return
}
}
next.ServeHTTP(w, r)
})
}
}
7 changes: 0 additions & 7 deletions model/model_gqlgen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions router/handler/handler.go
Original file line number Diff line number Diff line change
@@ -1,9 +1,15 @@
package handler

import (
"github.com/NPC-GO/MaJaJalist-backend/database"
"net/http"
)

func HtmlHandler(w http.ResponseWriter, r *http.Request) {
http.ServeFile(w, r, "./dist/index.html")
}
func Login(userDatabaseCtrl database.User) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {

}
} //post /login 的handler
12 changes: 8 additions & 4 deletions router/router.go
Original file line number Diff line number Diff line change
@@ -1,18 +1,22 @@
package router

import (
"github.com/NPC-GO/MaJaJalist-backend/database"
"github.com/NPC-GO/MaJaJalist-backend/middleware"
"github.com/NPC-GO/MaJaJalist-backend/router/handler"
"github.com/go-chi/chi"
"github.com/go-chi/chi/middleware"
chiMiddleware "github.com/go-chi/chi/middleware"
"net/http"
)

func InitRouter() chi.Router {
func InitRouter(userDatabaseCtrl database.User) chi.Router {
router := chi.NewRouter()
router.Use(
middleware.Logger,
middleware.Recoverer,
chiMiddleware.Logger,
chiMiddleware.Recoverer,
)
router.With(middleware.BeforeLoginAuth(userDatabaseCtrl)).Post("/login", handler.Login(userDatabaseCtrl))
//用middleware擋住已經登錄的
router.Get("/*", http.StripPrefix("/", http.FileServer(http.Dir("dist"))).ServeHTTP)
router.Get("/", handler.HtmlHandler)
return router
Expand Down
9 changes: 5 additions & 4 deletions server.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,13 @@ func main() {
Password: "postgres",
Database: "MaJaJalist",
Addr: "database:5432",
})
defer DB.Close()
server := router.InitRouter()
}) //連接到database
defer DB.Close() //在最後斷開連接
userDatabaseCtrl := database.User{DB: DB}
server := router.InitRouter(userDatabaseCtrl)
err := http.ListenAndServeTLS(":443", "./certs/server.crt", "./certs/server.key", server)
if err != nil {
fmt.Println(err)
http.ListenAndServe(":80", server)
http.ListenAndServe(":80", server) //無法使用https則用http
}
}