add sending to tg for method PutMessage

This commit is contained in:
Pavel 2024-02-11 23:16:40 +03:00
parent f9c4e7212a
commit fe35ebd5f4
3 changed files with 61 additions and 31 deletions

@ -142,7 +142,7 @@ func New(ctx context.Context, opts interface{}, ver appInit.Version) (appInit.Co
"/delegate": tools.HandlerWrapper(heruvym.Delegate),
"/vote": tools.HandlerWrapper(heruvym.Vote),
"/close": tools.HandlerWrapper(heruvym.CloseTicket),
"/shown": tools.HandlerWrapper(heruvym.SetShown),
"/shown": tools.HandlerWrapper(heruvym.SetShown),
})
mw := middleware.NewMiddleware(
@ -171,6 +171,7 @@ func New(ctx context.Context, opts interface{}, ver appInit.Version) (appInit.Co
mw.MiddlewareGetJwt,
//mw.MiddlewareJwtPlug,
//mw.MiddlewareRoleAccess,
mw.ExtractHostMiddleware,
)
fmt.Println("mux")
server := &http.Server{

@ -23,6 +23,7 @@ type Middleware struct {
}
const sessionKey = "Sess"
const HostKey = "host"
func NewMiddleware(
logger hlog.Logger,
@ -112,7 +113,7 @@ func (mw *Middleware) MiddlewareJwt(next http.Handler) http.Handler {
ctx := context.WithValue(r.Context(), jwt_adapter.RoleKey, role)
tokenCookie, err := r.Cookie(jwt_adapter.DefaultHeaderKey)
fmt.Println("MW1", err)
fmt.Println("MW1", err)
if err != nil {
// Escape GET requests
if r.Method == http.MethodGet {
@ -120,25 +121,27 @@ func (mw *Middleware) MiddlewareJwt(next http.Handler) http.Handler {
return
}
fmt.Println("MW2", jwt_adapter.DefaultHeaderKey, r.Header[jwt_adapter.DefaultHeaderKey])
fmt.Println("MW2", jwt_adapter.DefaultHeaderKey, r.Header[jwt_adapter.DefaultHeaderKey])
if len(r.Header[jwt_adapter.DefaultHeaderKey]) <= 0 || !func(hdrs []string) bool {
if len(hdrs) == 0 {return false}
if hdrs[0] == "Bearer" || hdrs[0] == "Bearer " {
return false
}
return true
}(r.Header[jwt_adapter.DefaultHeaderKey]) {
fmt.Println("MW3", r.Header[sessionKey], sessionKey, r.Header)
if len(hdrs) == 0 {
return false
}
if hdrs[0] == "Bearer" || hdrs[0] == "Bearer " {
return false
}
return true
}(r.Header[jwt_adapter.DefaultHeaderKey]) {
fmt.Println("MW3", r.Header[sessionKey], sessionKey, r.Header)
if len(r.Header[sessionKey]) <= 0 {
if sessCookie, err := r.Cookie(sessionKey); err != nil {
id := xid.New().String()
adapter = &jwt_adapter.JwtAdapter{Id: id}
http.SetCookie(w, &http.Cookie{
Name: sessionKey,
Value: id,
Expires: time.Now().Add(time.Hour * 24 * 30),
Name: sessionKey,
Value: id,
Expires: time.Now().Add(time.Hour * 24 * 30),
SameSite: http.SameSiteNoneMode,
Secure: true,
Secure: true,
})
} else {
adapter = &jwt_adapter.JwtAdapter{Id: sessCookie.Value}
@ -245,3 +248,11 @@ func (mw *Middleware) MiddlewareJwtPlug(next http.Handler) http.Handler {
})
}
*/
func (mw *Middleware) ExtractHostMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
host := r.Host
ctx := context.WithValue(r.Context(), HostKey, host)
next.ServeHTTP(w, r.WithContext(ctx))
})
}

@ -8,6 +8,7 @@ import (
"heruvym/dal/minio"
"heruvym/dal/mongo"
"heruvym/jwt_adapter"
"heruvym/middleware"
"heruvym/model"
"heruvym/tools"
"net/http"
@ -283,10 +284,16 @@ func (h *Heruvym) PutMessage(
request ReqPutMessage,
) (interface{}, int) {
sess := jwt_adapter.Get(ctx)
fmt.Println("PUTMES", sess)
fmt.Println("PUTMES", sess)
request.Files = []string{}
domain := ctx.Value(middleware.HostKey).(string)
if domain == "" {
fmt.Println("domain is nil err")
return errors.New("domain is nil"), http.StatusBadRequest
}
message, err := h.dal.PutMessage(
ctx,
request.Message,
@ -295,37 +302,48 @@ func (h *Heruvym) PutMessage(
request.TicketID,
[]string{},
)
fmt.Println("PUTMES00", err)
fmt.Println("PUTMES00", err)
if err != nil {
fmt.Println("PUTMES1", err)
return errors.New("can not put message"), http.StatusInternalServerError
}
go func() {
/*if sess.Id != "" {
if sess.Id != "" {
additional, err := h.dal.GetAdditionalData(context.TODO(), sess.Id)
fmt.Println("CAN NOT NOTIFY", err)
if err == nil && h.notifier != nil {
additional, err := h.dal.GetAdditionalData(context.TODO(), sess.Id)
fmt.Println("CAN NOT NOTIFY", err)
if _, err := h.notifier.Send(tb.ChatID(-1001344671794),
fmt.Sprintf("Поступило новое сообщение от пользователя %d с почтой %s",
additional.Uid, additional.Email)); err != nil {
var userLink string
if additional.Uid != 0 {
if domain == "sadmin.pena" {
userLink = fmt.Sprintf("https://sadmin.pena/users/%d", additional.Uid)
} else {
userLink = fmt.Sprintf("https://admin.pena/users/%d", additional.Uid)
}
} else {
userLink = "незарегистрированного пользователя"
}
message := fmt.Sprintf("Вам пришло сообщение от пользователя %s сссылка на пользователя - %s с %s",
additional.Email, userLink, domain)
if _, err := h.notifier.Send(tb.ChatID(-1001344671794), message); err != nil {
fmt.Println("CAN NOT NOTIFY", err)
}
return
}
}*/
}
if h.notifier != nil {
role := jwt_adapter.GetRole(ctx)
if role != "admin" && role != "manager" {
if _, err := h.notifier.Send(tb.ChatID(-1001802261459),
fmt.Sprintf(
"Поступило новое сообщение")); err != nil {
fmt.Println("CAN NOT NOTIFY", err)
}
message := "Поступило новое сообщение от незарегистрированного пользователя"
if _, err := h.notifier.Send(tb.ChatID(-1001802261459), message); err != nil {
fmt.Println("CAN NOT NOTIFY", err)
}
}
}
}()
@ -335,7 +353,7 @@ func (h *Heruvym) PutMessage(
//return errors.New("can not update ticket"), http.StatusInternalServerError
}
fmt.Println("PUTMES03" )
fmt.Println("PUTMES03")
return nil, http.StatusOK
}
@ -931,9 +949,9 @@ func (h *Heruvym) PutSC(w http.ResponseWriter, r *http.Request) {
}
type ShownReq struct {
ID string `json:"id"`
ID string `json:"id"`
}
func (h *Heruvym) SetShown(ctx context.Context, req ShownReq) (error, int) {
return h.dal.SetShown(ctx, req.ID, "me"), http.StatusOK
return h.dal.SetShown(ctx, req.ID, "me"), http.StatusOK
}