diff --git a/api/chat_auth_user_handler.go b/api/chat_auth_user_handler.go index c8127f53..6e0d7558 100644 --- a/api/chat_auth_user_handler.go +++ b/api/chat_auth_user_handler.go @@ -25,6 +25,7 @@ func (h *AuthUserHandler) Register(router *mux.Router) { router.HandleFunc("/users/{id}", h.UpdateSelf).Methods(http.MethodPut) router.HandleFunc("/signup", h.SignUp).Methods(http.MethodPost) router.HandleFunc("/login", h.Login).Methods(http.MethodPost) + router.HandleFunc("/token_10years", h.ForeverToken).Methods(http.MethodGet) // admin router.HandleFunc("/admin/users", h.CreateUser).Methods(http.MethodPost) // change user first name, last name @@ -188,6 +189,24 @@ func (h *AuthUserHandler) Login(w http.ResponseWriter, r *http.Request) { } +func (h *AuthUserHandler) ForeverToken(w http.ResponseWriter, r *http.Request) { + + lifetime := time.Duration(10*365*24) * time.Hour + userId, _ := getUserID(r.Context()) + userRole := r.Context().Value(userContextKey).(string) + token, err := auth.GenerateToken(userId, userRole, jwtSecretAndAud.Secret, jwtSecretAndAud.Audience, lifetime) + + if err != nil { + RespondWithError(w, http.StatusInternalServerError, "error.fail_to_generate_token", err) + return + } + w.Header().Set("Content-Type", "application/json") + expiresIn := time.Now().Add(lifetime).Unix() + json.NewEncoder(w).Encode(TokenResult{AccessToken: token, ExpiresIn: int(expiresIn)}) + w.WriteHeader(http.StatusOK) + +} + func (h *AuthUserHandler) Logout(w http.ResponseWriter, r *http.Request) { c, err := r.Cookie("jwt") if err != nil { diff --git a/api/chat_model_privilege_handler.go b/api/chat_model_privilege_handler.go index 0100d40a..592780b1 100644 --- a/api/chat_model_privilege_handler.go +++ b/api/chat_model_privilege_handler.go @@ -44,7 +44,6 @@ func (h *UserChatModelPrivilegeHandler) Register(r *mux.Router) { } - type ChatModelPrivilege struct { ID int32 `json:"id"` FullName string `json:"fullName"` @@ -53,7 +52,6 @@ type ChatModelPrivilege struct { RateLimit int32 `json:"rateLimit"` } - func (h *UserChatModelPrivilegeHandler) ListUserChatModelPrivileges(w http.ResponseWriter, r *http.Request) { // TODO: check user is super_user userChatModelRows, err := h.db.ListUserChatModelPrivilegesRateLimit(r.Context()) diff --git a/api/chat_user_active_chat_sesion_handler.go b/api/chat_user_active_chat_sesion_handler.go index 9a8b59b6..542d6cd2 100644 --- a/api/chat_user_active_chat_sesion_handler.go +++ b/api/chat_user_active_chat_sesion_handler.go @@ -44,8 +44,6 @@ func (h *UserActiveChatSessionHandler) GetUserActiveChatSessionHandler(w http.Re json.NewEncoder(w).Encode(session) } - - // CreateOrUpdateUserActiveChatSessionHandler handles POST requests to create a new session. func (h *UserActiveChatSessionHandler) CreateOrUpdateUserActiveChatSessionHandler(w http.ResponseWriter, r *http.Request) { ctx := r.Context()