Logout
This commit is contained in:
@ -1,7 +1,9 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"learnsteam/cslms-api/internal/models"
|
||||
"learnsteam/cslms-api/internal/services"
|
||||
@ -12,6 +14,7 @@ import (
|
||||
type AuthController interface {
|
||||
Register(*gin.Context)
|
||||
Login(*gin.Context)
|
||||
Logout(*gin.Context)
|
||||
}
|
||||
|
||||
type authController struct {
|
||||
@ -29,7 +32,7 @@ func NewAuthController(service services.AuthService, tokenService services.Token
|
||||
// Register
|
||||
//
|
||||
// @Summary 회원가입
|
||||
// @Description 회원가입
|
||||
// @Description 회원가입
|
||||
// @Tags 회원가입
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
@ -62,7 +65,7 @@ func (controller *authController) Register(c *gin.Context) {
|
||||
// Login 사용자 로그인
|
||||
//
|
||||
// @Summary 사용자 로그인 로그인
|
||||
// @Description 사용자가 로그인합니다.
|
||||
// @Description 사용자가 로그인합니다.
|
||||
// @Tags 로그인
|
||||
//
|
||||
// @Accept json
|
||||
@ -98,25 +101,47 @@ func (controller *authController) Login(c *gin.Context) {
|
||||
})
|
||||
}
|
||||
|
||||
// Logout
|
||||
// Logout 로그아웃
|
||||
//
|
||||
// @Summary 로그아웃
|
||||
// @Description 로그아웃하고 Token, Cookie 삭제
|
||||
// @Tags 로그아웃
|
||||
//
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
//
|
||||
// @Security Bearer
|
||||
//
|
||||
// @Router /auth/logout [post]
|
||||
func (controller *authController) Logout(c *gin.Context) {
|
||||
token := c.GetHeader("Authorization")
|
||||
if token == "" {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": "bad request"})
|
||||
return
|
||||
}
|
||||
token, err := func() (*string, error) {
|
||||
authorization := c.GetHeader("Authorization")
|
||||
strArr := strings.Split(authorization, " ")
|
||||
if len(strArr) == 2 {
|
||||
return &strArr[1], nil
|
||||
} else {
|
||||
return nil, fmt.Errorf("invalid authorization header")
|
||||
}
|
||||
}()
|
||||
|
||||
err := controller.tokenService.Delete(token)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
user_id := c.GetInt64("sub")
|
||||
|
||||
err = controller.tokenService.Invalid(user_id, *token)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
c.SetCookie("Authorization", "", -1, "/", "localhost", false, true)
|
||||
c.SetCookie("RefreshToken", "", -1, "/", "localhost", false, true)
|
||||
c.SetCookie("ExpiresAt", "", -1, "/", "localhost", false, true)
|
||||
c.SetCookie("RefreshExpiresAt", "", -1, "/", "localhost", false, true)
|
||||
c.SetCookie("RefreshTokenExpiresAt", "", -1, "/", "localhost", false, true)
|
||||
c.SetCookie("RefreshTokenExpiresAt", "", -1, "/", "localhost", false, true)
|
||||
c.SetCookie("RefreshTokenExpiresAt", "", -1, "/", "localhost", false, true)
|
||||
|
||||
c.JSON(http.StatusOK, gin.H{"message": "logout"})
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"strconv"
|
||||
@ -11,6 +12,7 @@ import (
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/google/uuid"
|
||||
"gorm.io/datatypes"
|
||||
)
|
||||
|
||||
type QuizPaperController interface {
|
||||
@ -147,6 +149,12 @@ func (controller *quizPaperController) Create(c *gin.Context) {
|
||||
|
||||
user_id := c.GetInt64("sub")
|
||||
|
||||
var tag datatypes.JSON
|
||||
tag, err := json.Marshal(request.Tag)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
quizPaper := &models.QuizPaper{
|
||||
GUID: uuid.NewString(),
|
||||
CenterID: request.CenterID,
|
||||
@ -154,7 +162,7 @@ func (controller *quizPaperController) Create(c *gin.Context) {
|
||||
Title: request.Title,
|
||||
Content: request.Content,
|
||||
Category: request.Category,
|
||||
Tag: request.Tag,
|
||||
Tag: tag,
|
||||
Status: request.Status,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
@ -204,13 +212,20 @@ func (controller *quizPaperController) Update(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
var tag datatypes.JSON
|
||||
tag, err = json.Marshal(request.Tag)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
user_id := c.GetInt64("sub")
|
||||
quizPaper.ManagerID = user_id
|
||||
quizPaper.CenterID = request.CenterID
|
||||
quizPaper.Title = request.Title
|
||||
quizPaper.Content = request.Content
|
||||
quizPaper.Category = request.Category
|
||||
quizPaper.Tag = request.Tag
|
||||
quizPaper.Tag = tag
|
||||
quizPaper.Status = request.Status
|
||||
quizPaper.UpdatedAt = time.Now()
|
||||
|
||||
|
@ -109,18 +109,6 @@ func (controller *userController) Find(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
sub := c.GetString("sub")
|
||||
user_id, err := strconv.ParseInt(sub, 10, 64)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
if user_id != id {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": "Wrong user"})
|
||||
return
|
||||
}
|
||||
|
||||
result, err := controller.service.Find(id)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||
|
@ -159,6 +159,7 @@ func (controller *userQuizController) Create(c *gin.Context) {
|
||||
CenterID: request.CenterID,
|
||||
UserQuizPaperID: request.UserQuizPaperID,
|
||||
No: request.No,
|
||||
QuizID: request.QuizID,
|
||||
QuestionType: request.QuestionType,
|
||||
Question: request.Question,
|
||||
Content: content,
|
||||
@ -223,8 +224,29 @@ func (controller *userQuizController) Update(c *gin.Context) {
|
||||
// Result string `json:"result" example:"success"`
|
||||
// Score float32 `json:"score" example:"10"`
|
||||
|
||||
var content datatypes.JSON
|
||||
content, err = json.Marshal(request.Content)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
var answer datatypes.JSON
|
||||
answer, err = json.Marshal([]string{})
|
||||
if err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
userquiz.CenterID = request.CenterID
|
||||
userquiz.UserQuizPaperID = request.UserQuizPaperID
|
||||
userquiz.No = request.No
|
||||
userquiz.QuestionType = request.QuestionType
|
||||
userquiz.Question = request.Question
|
||||
userquiz.Content = content
|
||||
userquiz.Answer = answer
|
||||
userquiz.Status = request.Status
|
||||
userquiz.Score = request.Score
|
||||
|
||||
result, err := controller.service.Update(userquiz)
|
||||
if err != nil {
|
||||
|
@ -1,7 +1,6 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"strconv"
|
||||
@ -160,14 +159,14 @@ func (controller *userQuizPaperController) Create(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
var users []int64
|
||||
err = json.Unmarshal(request.Users, &users)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
// var users []int64
|
||||
// err = json.Unmarshal(request.Users, &users)
|
||||
// if err != nil {
|
||||
// c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||
// return
|
||||
// }
|
||||
|
||||
templates := controller.service.Generate(users, quizPaper)
|
||||
templates := controller.service.Generate(request.Users, quizPaper)
|
||||
userQuizPapers, err := controller.service.Insert(templates)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||
|
Reference in New Issue
Block a user