feat (user): adjust for auth, hide pass
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
package handlercrudhelper
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"reflect"
|
||||
|
||||
hk "github.com/karincake/hongkue"
|
||||
)
|
||||
|
||||
func RegCrud(r *http.ServeMux, path string, mwAndRouter ...any) {
|
||||
sLength := len(mwAndRouter)
|
||||
|
||||
mwCandidates := mwAndRouter[:sLength-1]
|
||||
mwList := []hk.HandlerMw{}
|
||||
for i := range mwCandidates {
|
||||
// have to do it manually, since casting directly results unexpected result
|
||||
myType := reflect.TypeOf(mwCandidates[i])
|
||||
if myType.String() != "func(http.Handler) http.Handler" {
|
||||
panic("non middleware included as middleware")
|
||||
}
|
||||
mwList = append(mwList, mwCandidates[i].(func(http.Handler) http.Handler))
|
||||
|
||||
// if g, okHandler := mwCandidates[i].(func(http.Handler) http.Handler); !okHandler {
|
||||
// panic("non middleware included")
|
||||
// } else {
|
||||
// mwList = append(mwList, g)
|
||||
// }
|
||||
}
|
||||
|
||||
c, ok := mwAndRouter[sLength-1].(CrudBase)
|
||||
if !ok {
|
||||
panic("non CrudBase used in the last paramter")
|
||||
}
|
||||
|
||||
hk.GroupRoutes(path, r, mwList, hk.MapHandlerFunc{
|
||||
"POST /": c.Create,
|
||||
"GET /": c.GetList,
|
||||
"GET /{id}": c.GetDetail,
|
||||
"PATCH /{id}": c.Update,
|
||||
"DELETE /{id}": c.Delete,
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package handlercrudhelper
|
||||
|
||||
import "net/http"
|
||||
|
||||
type CrudBase interface {
|
||||
Create(w http.ResponseWriter, r *http.Request)
|
||||
GetList(w http.ResponseWriter, r *http.Request)
|
||||
GetDetail(w http.ResponseWriter, r *http.Request)
|
||||
Update(w http.ResponseWriter, r *http.Request)
|
||||
Delete(w http.ResponseWriter, r *http.Request)
|
||||
}
|
||||
@@ -3,6 +3,7 @@ package logger
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
|
||||
lz "github.com/karincake/apem/logger-zerolog"
|
||||
d "github.com/karincake/dodol"
|
||||
@@ -64,3 +65,15 @@ func SetLogError(e Event, data any) error {
|
||||
}
|
||||
return d.FieldError{Code: e.ErrInfo.Code, Message: msg}
|
||||
}
|
||||
|
||||
func GenMessage(errCode string, errDetail ...string) string {
|
||||
errMsg := ""
|
||||
if len(errDetail) == 0 || errDetail[0] == "" {
|
||||
errMsg = l.I.Msg(errCode)
|
||||
} else if len(errDetail) == 1 && errDetail[0] != "" { // manual
|
||||
errMsg = fmt.Sprintf(l.I.Msg(errCode), errDetail[0])
|
||||
} else if len(errDetail) == 2 && errDetail[0] != "" && errDetail[1] != "" { // manual
|
||||
errMsg = fmt.Sprintf(l.I.Msg(errCode), errDetail[0], errDetail[1])
|
||||
}
|
||||
return errMsg
|
||||
}
|
||||
|
||||
@@ -6,12 +6,10 @@ import (
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
l "github.com/karincake/apem/loggera"
|
||||
lz "github.com/karincake/apem/logger-zerolog"
|
||||
lo "github.com/karincake/apem/loggero"
|
||||
)
|
||||
|
||||
var Logger l.LoggerItf
|
||||
|
||||
type wrappedWriter struct {
|
||||
http.ResponseWriter
|
||||
statusCode int
|
||||
@@ -31,7 +29,7 @@ func SetLog(next http.Handler) http.Handler {
|
||||
}
|
||||
|
||||
next.ServeHTTP(wrapped, r)
|
||||
Logger.Info().
|
||||
lz.O.Info().
|
||||
String("scope", "request").
|
||||
Int("status", wrapped.statusCode).
|
||||
String("method", r.Method).
|
||||
|
||||
Reference in New Issue
Block a user