package routers import ( "fmt" "main/configs" "main/models" "main/utils" "net/http" "time" ) // 獲取當前賬戶信息(重寫, 爲輸出增加sid字段) func AccountGet(w http.ResponseWriter, r *http.Request) { var account struct { ID int `json:"id"` Name string `json:"name"` Email string `json:"email"` SessionID string `json:"session_id"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } // 獲取Cookie cookie, err := r.Cookie("session_id") if err != nil { fmt.Println(err) w.WriteHeader(http.StatusUnauthorized) w.Write([]byte("401 - 未登錄")) return } // 獲取會話 session := models.Session{ID: cookie.Value} if err := configs.ORMDB().Take(&session).Error; err != nil { fmt.Println(err) w.WriteHeader(http.StatusUnauthorized) w.Write([]byte("401 - 會話已過期")) return } // 獲取用戶 user := models.User{ID: session.UserID} configs.ORMDB().Model(&user).Select("id, name, email, created_at, updated_at").Find(&user) account.ID = user.ID account.Name = user.Name account.Email = user.Email account.SessionID = session.ID account.CreatedAt = user.CreatedAt account.UpdatedAt = user.UpdatedAt w.Header().Set("Content-Type", "application/json; charset=utf-8") w.Write(utils.ToJSON(account)) }