新增用户相关的接口
This commit is contained in:
parent
d4887545d3
commit
b21e15763d
|
@ -58,7 +58,9 @@ func (db *AccessDB) GetAccessRequest(ctx SQLContext, userID cdssdk.UserID, dataT
|
|||
bd.content,
|
||||
bd.access_level,
|
||||
ar.applicant_id,
|
||||
ar.status
|
||||
ar.status,
|
||||
usr.username,
|
||||
usr.sso_id
|
||||
from
|
||||
(
|
||||
select
|
||||
|
@ -84,6 +86,10 @@ func (db *AccessDB) GetAccessRequest(ctx SQLContext, userID cdssdk.UserID, dataT
|
|||
) as bd on
|
||||
bd.user_id = ar.user_id
|
||||
and bd.id = ar.binding_id
|
||||
left join (
|
||||
select * from users
|
||||
) as usr on
|
||||
bd.user_id = usr.id
|
||||
`
|
||||
status := []string{sch.PendingStatus, sch.ApprovedStatus, sch.RejectedStatus}
|
||||
err := ctx.Raw(sql, userID, status, userID, dataType, sch.ApplyAccess).Scan(&ret).Error
|
||||
|
@ -142,3 +148,21 @@ func (db *AccessDB) GetUserBySsoID(ctx SQLContext, id string) (cdssdk.UserID, er
|
|||
|
||||
return ret, nil
|
||||
}
|
||||
|
||||
func (db *AccessDB) AddUser(ctx SQLContext, user sch.User) error {
|
||||
// 根据ssoID查询数据是否存在
|
||||
var existUser sch.User
|
||||
err := ctx.Table("users").Where("sso_id = ?", user.SsoID).Find(&existUser).Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if existUser.ID != 0 {
|
||||
return fmt.Errorf("user already exists")
|
||||
}
|
||||
|
||||
return ctx.Table("users").Create(&user).Error
|
||||
}
|
||||
|
||||
func (db *AccessDB) UpdateUser(ctx SQLContext, id string, username string) error {
|
||||
return ctx.Table("users").Where("sso_id = ?", id).Update("username", username).Error
|
||||
}
|
||||
|
|
|
@ -354,7 +354,9 @@ func (db *UploadDataDB) GetApplyBindings(ctx SQLContext, userID cdssdk.UserID, l
|
|||
bd.data_type,
|
||||
bd.content,
|
||||
ar.applicant_id,
|
||||
ar.status
|
||||
ar.status,
|
||||
usr.username,
|
||||
usr.sso_id
|
||||
from
|
||||
(
|
||||
select
|
||||
|
@ -379,6 +381,10 @@ func (db *UploadDataDB) GetApplyBindings(ctx SQLContext, userID cdssdk.UserID, l
|
|||
) as ar on
|
||||
bd.user_id = ar.data_owner_id
|
||||
and bd.id = ar.binding_id
|
||||
left join (
|
||||
select * from users
|
||||
) as usr on
|
||||
bd.user_id = usr.id
|
||||
`
|
||||
err := ctx.Raw(sql, level, dataType, userID, userID, sch.ExpiredStatus).Scan(&ret).Error
|
||||
if err != nil {
|
||||
|
@ -398,7 +404,9 @@ func (db *UploadDataDB) GetPublicBindings(ctx SQLContext, level string, dataType
|
|||
bd.content,
|
||||
bd.access_level,
|
||||
ar.applicant_id,
|
||||
ar.status
|
||||
ar.status,
|
||||
usr.username,
|
||||
usr.sso_id
|
||||
from
|
||||
(
|
||||
select
|
||||
|
@ -419,6 +427,10 @@ func (db *UploadDataDB) GetPublicBindings(ctx SQLContext, level string, dataType
|
|||
accessRequests
|
||||
) as ar on
|
||||
bd.user_id = ar.user_id
|
||||
left join (
|
||||
select * from users
|
||||
) as usr on
|
||||
bd.user_id = usr.id
|
||||
`
|
||||
err := ctx.Raw(sql, level, dataType, userID).Scan(&ret).Error
|
||||
if err != nil {
|
||||
|
|
|
@ -144,30 +144,30 @@ func (s *AccessService) UpdateBindingDataAccess(ctx *gin.Context) {
|
|||
ctx.JSON(http.StatusOK, OK("ok"))
|
||||
}
|
||||
|
||||
type QueryUserReq struct {
|
||||
SsoID string `form:"ssoID"`
|
||||
}
|
||||
|
||||
type QueryUserResp struct {
|
||||
UserID cdssdk.UserID `json:"userID"`
|
||||
}
|
||||
|
||||
func (s *AccessService) QueryUser(ctx *gin.Context) {
|
||||
var req QueryUserReq
|
||||
if err := ctx.ShouldBindQuery(&req); err != nil {
|
||||
log.Warnf("binding body: %s", err.Error())
|
||||
ctx.JSON(http.StatusBadRequest, Failed(errorcode.BadArgument, "missing argument or invalid argument"))
|
||||
return
|
||||
}
|
||||
|
||||
userID, err := s.svc.AccessSvc().QueryUser(req.SsoID)
|
||||
if err != nil {
|
||||
log.Warnf("get access requests: %s", err.Error())
|
||||
ctx.JSON(http.StatusOK, Failed(errorcode.OperationFailed, fmt.Sprintf("get access requests: %v", err)))
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, OK(QueryUserResp{
|
||||
UserID: userID,
|
||||
}))
|
||||
}
|
||||
//type QueryUserReq struct {
|
||||
// SsoID string `form:"ssoID"`
|
||||
//}
|
||||
//
|
||||
//type QueryUserResp struct {
|
||||
// UserID cdssdk.UserID `json:"userID"`
|
||||
//}
|
||||
//
|
||||
//func (s *AccessService) QueryUser(ctx *gin.Context) {
|
||||
// var req QueryUserReq
|
||||
// if err := ctx.ShouldBindQuery(&req); err != nil {
|
||||
// log.Warnf("binding body: %s", err.Error())
|
||||
// ctx.JSON(http.StatusBadRequest, Failed(errorcode.BadArgument, "missing argument or invalid argument"))
|
||||
// return
|
||||
// }
|
||||
//
|
||||
// userID, err := s.svc.AccessSvc().QueryUser(req.SsoID)
|
||||
// if err != nil {
|
||||
// log.Warnf("get access requests: %s", err.Error())
|
||||
// ctx.JSON(http.StatusOK, Failed(errorcode.OperationFailed, fmt.Sprintf("get access requests: %v", err)))
|
||||
// return
|
||||
// }
|
||||
//
|
||||
// ctx.JSON(http.StatusOK, OK(QueryUserResp{
|
||||
// UserID: userID,
|
||||
// }))
|
||||
//}
|
||||
|
|
|
@ -65,5 +65,8 @@ func (s *Server) initRouters() {
|
|||
s.engine.POST("/access/updateAccessRequestStatus", s.AccessSvc().UpdateAccessRequestStatus)
|
||||
s.engine.POST("/access/getAccessRequests", s.AccessSvc().GetAccessRequests)
|
||||
s.engine.POST("/access/updateBindingDataAccess", s.AccessSvc().UpdateBindingDataAccess)
|
||||
s.engine.GET("/access/queryUser", s.AccessSvc().QueryUser)
|
||||
|
||||
s.engine.GET("/user/query", s.UserSvc().QueryUser)
|
||||
s.engine.GET("/user/register", s.UserSvc().AddUser)
|
||||
s.engine.GET("/user/update", s.UserSvc().UpdateUser)
|
||||
}
|
||||
|
|
|
@ -0,0 +1,89 @@
|
|||
package http
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/gin-gonic/gin"
|
||||
"gitlink.org.cn/cloudream/common/consts/errorcode"
|
||||
log "gitlink.org.cn/cloudream/common/pkgs/logger"
|
||||
cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
type UserService struct {
|
||||
*Server
|
||||
}
|
||||
|
||||
func (s *Server) UserSvc() *UserService {
|
||||
return &UserService{
|
||||
Server: s,
|
||||
}
|
||||
}
|
||||
|
||||
type QueryUserReq struct {
|
||||
SsoID string `form:"ssoID"`
|
||||
}
|
||||
|
||||
type QueryUserResp struct {
|
||||
UserID cdssdk.UserID `json:"userID"`
|
||||
}
|
||||
|
||||
func (s *UserService) QueryUser(ctx *gin.Context) {
|
||||
var req QueryUserReq
|
||||
if err := ctx.ShouldBindQuery(&req); err != nil {
|
||||
log.Warnf("binding body: %s", err.Error())
|
||||
ctx.JSON(http.StatusBadRequest, Failed(errorcode.BadArgument, "missing argument or invalid argument"))
|
||||
return
|
||||
}
|
||||
|
||||
userID, err := s.svc.UserSvc().QueryUser(req.SsoID)
|
||||
if err != nil {
|
||||
log.Warnf("get access requests: %s", err.Error())
|
||||
ctx.JSON(http.StatusOK, Failed(errorcode.OperationFailed, fmt.Sprintf("get access requests: %v", err)))
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, OK(QueryUserResp{
|
||||
UserID: userID,
|
||||
}))
|
||||
}
|
||||
|
||||
type AlterUserReq struct {
|
||||
SsoID string `form:"ssoID"`
|
||||
UserName string `form:"userName"`
|
||||
}
|
||||
|
||||
func (s *UserService) AddUser(ctx *gin.Context) {
|
||||
var req AlterUserReq
|
||||
if err := ctx.ShouldBindQuery(&req); err != nil {
|
||||
log.Warnf("binding body: %s", err.Error())
|
||||
ctx.JSON(http.StatusBadRequest, Failed(errorcode.BadArgument, "missing argument or invalid argument"))
|
||||
return
|
||||
}
|
||||
|
||||
err := s.svc.UserSvc().AddUser(req.SsoID, req.UserName)
|
||||
if err != nil {
|
||||
log.Warnf("get access requests: %s", err.Error())
|
||||
ctx.JSON(http.StatusOK, Failed(errorcode.OperationFailed, fmt.Sprintf("get access requests: %v", err)))
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, OK("ok"))
|
||||
}
|
||||
|
||||
func (s *UserService) UpdateUser(ctx *gin.Context) {
|
||||
var req AlterUserReq
|
||||
if err := ctx.ShouldBindQuery(&req); err != nil {
|
||||
log.Warnf("binding body: %s", err.Error())
|
||||
ctx.JSON(http.StatusBadRequest, Failed(errorcode.BadArgument, "missing argument or invalid argument"))
|
||||
return
|
||||
}
|
||||
|
||||
err := s.svc.UserSvc().UpdateUser(req.SsoID, req.UserName)
|
||||
if err != nil {
|
||||
log.Warnf("get access requests: %s", err.Error())
|
||||
ctx.JSON(http.StatusOK, Failed(errorcode.OperationFailed, fmt.Sprintf("get access requests: %v", err)))
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, OK("ok"))
|
||||
}
|
|
@ -125,11 +125,11 @@ func (svc *AccessService) UpdateBindingDataAccess(id uploadersdk.DataID, level s
|
|||
return nil
|
||||
}
|
||||
|
||||
func (svc *AccessService) QueryUser(id string) (cdssdk.UserID, error) {
|
||||
userID, err := svc.db.Access().GetUserBySsoID(svc.db.DefCtx(), id)
|
||||
if err != nil {
|
||||
return userID, err
|
||||
}
|
||||
|
||||
return userID, err
|
||||
}
|
||||
//func (svc *AccessService) QueryUser(id string) (cdssdk.UserID, error) {
|
||||
// userID, err := svc.db.Access().GetUserBySsoID(svc.db.DefCtx(), id)
|
||||
// if err != nil {
|
||||
// return userID, err
|
||||
// }
|
||||
//
|
||||
// return userID, err
|
||||
//}
|
||||
|
|
|
@ -560,6 +560,8 @@ func (svc *JobSetService) QueryBinding(dataType string, param sch.QueryBindingDa
|
|||
bindingDetail := uploadersdk.BindingDetail{
|
||||
ID: data.ID,
|
||||
UserID: data.UserID,
|
||||
UserName: data.UserName,
|
||||
SSOId: data.SSOId,
|
||||
Name: data.Name,
|
||||
Info: info,
|
||||
AccessLevel: data.AccessLevel,
|
||||
|
@ -592,6 +594,8 @@ func (svc *JobSetService) QueryBinding(dataType string, param sch.QueryBindingDa
|
|||
bindingDetail := uploadersdk.BindingDetail{
|
||||
ID: data.ID,
|
||||
UserID: data.UserID,
|
||||
UserName: data.UserName,
|
||||
SSOId: data.SSOId,
|
||||
Name: data.Name,
|
||||
Info: info,
|
||||
Status: data.Status,
|
||||
|
@ -815,6 +819,7 @@ func (svc *JobSetService) DeletePackage(userID cdssdk.UserID, packageID cdssdk.P
|
|||
}
|
||||
|
||||
func (svc *JobSetService) QueryResource(queryResource sch.ResourceRange) ([]sch.ClusterDetail, error) {
|
||||
|
||||
clusterDetails, err := svc.getClusterResources()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -1007,6 +1012,7 @@ func (svc *JobSetService) getClusterResources() ([]sch.ClusterDetail, error) {
|
|||
if err != nil {
|
||||
return nil, fmt.Errorf("get cluster info: %w", err)
|
||||
}
|
||||
|
||||
if len(clusterDetails) == 0 {
|
||||
return nil, errors.New("no cluster found")
|
||||
}
|
||||
|
|
|
@ -0,0 +1,48 @@
|
|||
package services
|
||||
|
||||
import (
|
||||
sch "gitlink.org.cn/cloudream/common/sdks/pcmscheduler"
|
||||
cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
|
||||
"time"
|
||||
)
|
||||
|
||||
type UserService struct {
|
||||
*Service
|
||||
}
|
||||
|
||||
func (svc *Service) UserSvc() *UserService {
|
||||
return &UserService{Service: svc}
|
||||
}
|
||||
|
||||
func (svc *UserService) QueryUser(id string) (cdssdk.UserID, error) {
|
||||
userID, err := svc.db.Access().GetUserBySsoID(svc.db.DefCtx(), id)
|
||||
if err != nil {
|
||||
return userID, err
|
||||
}
|
||||
|
||||
return userID, err
|
||||
}
|
||||
|
||||
func (svc *UserService) AddUser(id string, userName string) error {
|
||||
user := sch.User{
|
||||
SsoID: id,
|
||||
UserName: userName,
|
||||
Created: time.Now(),
|
||||
}
|
||||
|
||||
err := svc.db.Access().AddUser(svc.db.DefCtx(), user)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
func (svc *UserService) UpdateUser(id string, userName string) error {
|
||||
err := svc.db.Access().UpdateUser(svc.db.DefCtx(), id, userName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
Loading…
Reference in New Issue