This commit is contained in:
2023-12-29 00:27:12 +09:00
parent b4a0b72f66
commit c31a16843d
35 changed files with 451 additions and 261 deletions

View File

@ -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"})
}

View File

@ -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()

View File

@ -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()})

View File

@ -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 {

View File

@ -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()})