feat:permission base usecase
This commit is contained in:
parent
cccad97512
commit
eb85982ef1
|
@ -118,11 +118,12 @@ issues:
|
|||
- contextcheck
|
||||
|
||||
exclude-dirs:
|
||||
- internal/model
|
||||
- internal/mock
|
||||
- internal/logic
|
||||
|
||||
exclude-files:
|
||||
- .*_test.go
|
||||
- permission_tree.go
|
||||
- role_permission.go
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -2,7 +2,8 @@ package main
|
|||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/gen_result/pb/permission"
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/internal/config"
|
||||
|
@ -34,6 +35,6 @@ func main() {
|
|||
})
|
||||
defer s.Stop()
|
||||
|
||||
fmt.Printf("Starting rpc server at %s...\n", c.ListenOn)
|
||||
logx.Infof("Starting rpc server at %s...\n", c.ListenOn)
|
||||
s.Start()
|
||||
}
|
||||
|
|
|
@ -5,23 +5,22 @@ import (
|
|||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
)
|
||||
|
||||
// 1. UID (使用者ID)
|
||||
//
|
||||
//1. UID (使用者ID)
|
||||
// 這個欄位通常代表創建這個角色的使用者,可能的用途:
|
||||
// • 追蹤角色的建立者:確保知道誰創建了這個角色。
|
||||
// • 限定角色的管理範圍:例如,只有 UID 對應的使用者可以修改或刪除這個角色。
|
||||
// • 支援多租戶 (Multi-Tenancy):如果一個 UID 只能看到自己創建的角色,那這個系統可能是多租戶架構的一部分。
|
||||
//
|
||||
//這個欄位通常代表創建這個角色的使用者,可能的用途:
|
||||
//• 追蹤角色的建立者:確保知道誰創建了這個角色。
|
||||
//• 限定角色的管理範圍:例如,只有 UID 對應的使用者可以修改或刪除這個角色。
|
||||
//• 支援多租戶 (Multi-Tenancy):如果一個 UID 只能看到自己創建的角色,那這個系統可能是多租戶架構的一部分。
|
||||
// 2. ClientID (客戶端ID)
|
||||
//
|
||||
//2. ClientID (客戶端ID)
|
||||
//
|
||||
//這個欄位通常代表該角色所屬的應用程式或客戶端,可能的用途:
|
||||
//• 多租戶架構 (Multi-Tenancy):不同 ClientID 的角色可能互相隔離,確保不同組織不會影響彼此的角色權限。
|
||||
//• 對應 OAuth 2.0 或 OpenID Connect:
|
||||
//• 在 OAuth2 / OIDC 的架構下,每個應用程式 (client_id) 可能有不同的角色和權限。
|
||||
//• 例如,client_id 為 web-app-1 的角色與 client_id 為 mobile-app-1 的角色可能完全不同。
|
||||
//• API 權限控制:
|
||||
//• ClientID 可能是用來限制某些角色只能在特定應用程式中被使用,例如 Web 端和行動端的角色不同。
|
||||
// 這個欄位通常代表該角色所屬的應用程式或客戶端,可能的用途:
|
||||
// • 多租戶架構 (Multi-Tenancy):不同 ClientID 的角色可能互相隔離,確保不同組織不會影響彼此的角色權限。
|
||||
// • 對應 OAuth 2.0 或 OpenID Connect:
|
||||
// • 在 OAuth2 / OIDC 的架構下,每個應用程式 (client_id) 可能有不同的角色和權限。
|
||||
// • 例如,client_id 為 web-app-1 的角色與 client_id 為 mobile-app-1 的角色可能完全不同。
|
||||
// • API 權限控制:
|
||||
// • ClientID 可能是用來限制某些角色只能在特定應用程式中被使用,例如 Web 端和行動端的角色不同。
|
||||
|
||||
// Role 是這樣,如果有綁定某個 UID
|
||||
type Role struct {
|
||||
|
|
|
@ -20,6 +20,16 @@ const (
|
|||
TokenGetErrorCode
|
||||
|
||||
FailedToGetRolePermission
|
||||
FailedToGetUserRole
|
||||
FailedToGetUserRoleByUID
|
||||
FailedToCreateUserRole
|
||||
FailedToUpdateUserRole
|
||||
FailedToListRole
|
||||
FailedToGetRoleByID
|
||||
FailedToGetRoleByUID
|
||||
FailedToCreateRole
|
||||
FailedToUpdateRole
|
||||
FailedToDelRole
|
||||
)
|
||||
|
||||
func TokenError(ec ers.ErrorCode, s ...string) *ers.LibError {
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
package rbac
|
||||
|
||||
import (
|
||||
"github.com/stretchr/testify/assert"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestRule_ToString(t *testing.T) {
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
package repository
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/entity"
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/permission"
|
||||
"context"
|
||||
"go.mongodb.org/mongo-driver/mongo"
|
||||
)
|
||||
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
package repository
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/entity"
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/permission"
|
||||
"context"
|
||||
"go.mongodb.org/mongo-driver/mongo"
|
||||
)
|
||||
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
package repository
|
||||
|
||||
import (
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/entity"
|
||||
"context"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/entity"
|
||||
"go.mongodb.org/mongo-driver/mongo"
|
||||
)
|
||||
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
package repository
|
||||
|
||||
import (
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/entity"
|
||||
"context"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/entity"
|
||||
"go.mongodb.org/mongo-driver/mongo"
|
||||
)
|
||||
|
||||
|
|
|
@ -30,6 +30,7 @@ var validAdditionalKeys = map[Additional]struct{}{
|
|||
// IsValidAdditional 檢查是否是有效的 Additional Key
|
||||
func IsValidAdditional(key Additional) bool {
|
||||
_, exists := validAdditionalKeys[key]
|
||||
|
||||
return exists
|
||||
}
|
||||
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
package token
|
||||
|
||||
import (
|
||||
"github.com/stretchr/testify/assert"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestAdditional_String(t *testing.T) {
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
package token
|
||||
|
||||
import (
|
||||
"github.com/stretchr/testify/assert"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestTScope_ToString(t *testing.T) {
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
package token
|
||||
|
||||
import (
|
||||
"github.com/stretchr/testify/assert"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestType_ToString(t *testing.T) {
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
package usecase
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/entity"
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/permission"
|
||||
"context"
|
||||
)
|
||||
|
||||
type PermissionUseCase interface {
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
package usecase
|
||||
|
||||
import (
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/permission"
|
||||
"context"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/permission"
|
||||
)
|
||||
|
||||
type RoleUseCase interface {
|
||||
|
@ -35,8 +36,8 @@ type Role struct {
|
|||
}
|
||||
|
||||
type CreateRoleReq struct {
|
||||
Name *string `json:"name"` // 角色名稱
|
||||
UID *string `json:"uid"`
|
||||
ClientID *string `json:"client_id"`
|
||||
Status *permission.Status `json:"status"` // 例如 1: 啟用, 0: 停用
|
||||
Name string `json:"name"` // 角色名稱
|
||||
UID string `json:"uid"`
|
||||
ClientID string `json:"client_id"`
|
||||
Status permission.Status `json:"status"` // 例如 1: 啟用, 0: 停用
|
||||
}
|
||||
|
|
|
@ -1,16 +1,17 @@
|
|||
package usecase
|
||||
|
||||
import (
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/permission"
|
||||
"context"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/permission"
|
||||
)
|
||||
|
||||
type RolePermissionUseCase interface {
|
||||
Get(ctx context.Context, roleID int64) (permission.Permissions, error)
|
||||
Get(ctx context.Context, roleID string) (permission.Permissions, error)
|
||||
GetByRoleUID(ctx context.Context, uid string) (permission.Permissions, error)
|
||||
GetByUser(ctx context.Context, uid string) (UserPermission, error)
|
||||
Create(ctx context.Context, roleID int64, permissions permission.Permissions) error
|
||||
Delete(ctx context.Context, roleID int64, permissions permission.Permissions) error
|
||||
Create(ctx context.Context, roleID string, permissions permission.Permissions) error
|
||||
Delete(ctx context.Context, roleID string, permissions permission.Permissions) error
|
||||
List(ctx context.Context, req ListQuery) (RoleResp, error)
|
||||
}
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ type UserRoleUseCase interface {
|
|||
Select(ctx context.Context, filter UserRoleFilter) ([]UserRole, error)
|
||||
Get(ctx context.Context, uid string) (UserRole, error)
|
||||
Create(ctx context.Context, uid, roleID string) (UserRole, error)
|
||||
Delete(ctx context.Context, uid, roleID string) error
|
||||
Update(ctx context.Context, uid, roleID string) error
|
||||
}
|
||||
|
||||
type UserRole struct {
|
||||
|
|
|
@ -0,0 +1,285 @@
|
|||
// Code generated by MockGen. DO NOT EDIT.
|
||||
// Source: ./pkg/domain/repository/permission.go
|
||||
//
|
||||
// Generated by this command:
|
||||
//
|
||||
// mockgen -source=./pkg/domain/repository/permission.go -destination=./pkg/mock/repository/permission.go -package=mock
|
||||
//
|
||||
|
||||
// Package mock is a generated GoMock package.
|
||||
package mock
|
||||
|
||||
import (
|
||||
context "context"
|
||||
reflect "reflect"
|
||||
|
||||
entity "code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/entity"
|
||||
permission "code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/permission"
|
||||
repository "code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/repository"
|
||||
mongo "go.mongodb.org/mongo-driver/mongo"
|
||||
gomock "go.uber.org/mock/gomock"
|
||||
)
|
||||
|
||||
// MockPermissionRepository is a mock of PermissionRepository interface.
|
||||
type MockPermissionRepository struct {
|
||||
ctrl *gomock.Controller
|
||||
recorder *MockPermissionRepositoryMockRecorder
|
||||
isgomock struct{}
|
||||
}
|
||||
|
||||
// MockPermissionRepositoryMockRecorder is the mock recorder for MockPermissionRepository.
|
||||
type MockPermissionRepositoryMockRecorder struct {
|
||||
mock *MockPermissionRepository
|
||||
}
|
||||
|
||||
// NewMockPermissionRepository creates a new mock instance.
|
||||
func NewMockPermissionRepository(ctrl *gomock.Controller) *MockPermissionRepository {
|
||||
mock := &MockPermissionRepository{ctrl: ctrl}
|
||||
mock.recorder = &MockPermissionRepositoryMockRecorder{mock}
|
||||
return mock
|
||||
}
|
||||
|
||||
// EXPECT returns an object that allows the caller to indicate expected use.
|
||||
func (m *MockPermissionRepository) EXPECT() *MockPermissionRepositoryMockRecorder {
|
||||
return m.recorder
|
||||
}
|
||||
|
||||
// Delete mocks base method.
|
||||
func (m *MockPermissionRepository) Delete(ctx context.Context, id string) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Delete", ctx, id)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Delete indicates an expected call of Delete.
|
||||
func (mr *MockPermissionRepositoryMockRecorder) Delete(ctx, id any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockPermissionRepository)(nil).Delete), ctx, id)
|
||||
}
|
||||
|
||||
// FindByNames mocks base method.
|
||||
func (m *MockPermissionRepository) FindByNames(ctx context.Context, names []string) ([]entity.Permission, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "FindByNames", ctx, names)
|
||||
ret0, _ := ret[0].([]entity.Permission)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// FindByNames indicates an expected call of FindByNames.
|
||||
func (mr *MockPermissionRepositoryMockRecorder) FindByNames(ctx, names any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FindByNames", reflect.TypeOf((*MockPermissionRepository)(nil).FindByNames), ctx, names)
|
||||
}
|
||||
|
||||
// FindOne mocks base method.
|
||||
func (m *MockPermissionRepository) FindOne(ctx context.Context, query repository.PermissionQuery) (entity.Permission, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "FindOne", ctx, query)
|
||||
ret0, _ := ret[0].(entity.Permission)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// FindOne indicates an expected call of FindOne.
|
||||
func (mr *MockPermissionRepositoryMockRecorder) FindOne(ctx, query any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FindOne", reflect.TypeOf((*MockPermissionRepository)(nil).FindOne), ctx, query)
|
||||
}
|
||||
|
||||
// GetAll mocks base method.
|
||||
func (m *MockPermissionRepository) GetAll(ctx context.Context, status *permission.Status) ([]entity.Permission, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "GetAll", ctx, status)
|
||||
ret0, _ := ret[0].([]entity.Permission)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// GetAll indicates an expected call of GetAll.
|
||||
func (mr *MockPermissionRepositoryMockRecorder) GetAll(ctx, status any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAll", reflect.TypeOf((*MockPermissionRepository)(nil).GetAll), ctx, status)
|
||||
}
|
||||
|
||||
// GetAllIntoIDMap mocks base method.
|
||||
func (m *MockPermissionRepository) GetAllIntoIDMap(ctx context.Context, status *permission.Status) (map[string]entity.Permission, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "GetAllIntoIDMap", ctx, status)
|
||||
ret0, _ := ret[0].(map[string]entity.Permission)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// GetAllIntoIDMap indicates an expected call of GetAllIntoIDMap.
|
||||
func (mr *MockPermissionRepositoryMockRecorder) GetAllIntoIDMap(ctx, status any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAllIntoIDMap", reflect.TypeOf((*MockPermissionRepository)(nil).GetAllIntoIDMap), ctx, status)
|
||||
}
|
||||
|
||||
// Index20250214UP mocks base method.
|
||||
func (m *MockPermissionRepository) Index20250214UP(ctx context.Context) (*mongo.Cursor, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Index20250214UP", ctx)
|
||||
ret0, _ := ret[0].(*mongo.Cursor)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// Index20250214UP indicates an expected call of Index20250214UP.
|
||||
func (mr *MockPermissionRepositoryMockRecorder) Index20250214UP(ctx any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Index20250214UP", reflect.TypeOf((*MockPermissionRepository)(nil).Index20250214UP), ctx)
|
||||
}
|
||||
|
||||
// Insert mocks base method.
|
||||
func (m *MockPermissionRepository) Insert(ctx context.Context, permission entity.Permission) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Insert", ctx, permission)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Insert indicates an expected call of Insert.
|
||||
func (mr *MockPermissionRepositoryMockRecorder) Insert(ctx, permission any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockPermissionRepository)(nil).Insert), ctx, permission)
|
||||
}
|
||||
|
||||
// Update mocks base method.
|
||||
func (m *MockPermissionRepository) Update(ctx context.Context, id string, req repository.UpdatePermission) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Update", ctx, id, req)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Update indicates an expected call of Update.
|
||||
func (mr *MockPermissionRepositoryMockRecorder) Update(ctx, id, req any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockPermissionRepository)(nil).Update), ctx, id, req)
|
||||
}
|
||||
|
||||
// MockGetPermission is a mock of GetPermission interface.
|
||||
type MockGetPermission struct {
|
||||
ctrl *gomock.Controller
|
||||
recorder *MockGetPermissionMockRecorder
|
||||
isgomock struct{}
|
||||
}
|
||||
|
||||
// MockGetPermissionMockRecorder is the mock recorder for MockGetPermission.
|
||||
type MockGetPermissionMockRecorder struct {
|
||||
mock *MockGetPermission
|
||||
}
|
||||
|
||||
// NewMockGetPermission creates a new mock instance.
|
||||
func NewMockGetPermission(ctrl *gomock.Controller) *MockGetPermission {
|
||||
mock := &MockGetPermission{ctrl: ctrl}
|
||||
mock.recorder = &MockGetPermissionMockRecorder{mock}
|
||||
return mock
|
||||
}
|
||||
|
||||
// EXPECT returns an object that allows the caller to indicate expected use.
|
||||
func (m *MockGetPermission) EXPECT() *MockGetPermissionMockRecorder {
|
||||
return m.recorder
|
||||
}
|
||||
|
||||
// FindByNames mocks base method.
|
||||
func (m *MockGetPermission) FindByNames(ctx context.Context, names []string) ([]entity.Permission, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "FindByNames", ctx, names)
|
||||
ret0, _ := ret[0].([]entity.Permission)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// FindByNames indicates an expected call of FindByNames.
|
||||
func (mr *MockGetPermissionMockRecorder) FindByNames(ctx, names any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FindByNames", reflect.TypeOf((*MockGetPermission)(nil).FindByNames), ctx, names)
|
||||
}
|
||||
|
||||
// FindOne mocks base method.
|
||||
func (m *MockGetPermission) FindOne(ctx context.Context, query repository.PermissionQuery) (entity.Permission, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "FindOne", ctx, query)
|
||||
ret0, _ := ret[0].(entity.Permission)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// FindOne indicates an expected call of FindOne.
|
||||
func (mr *MockGetPermissionMockRecorder) FindOne(ctx, query any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FindOne", reflect.TypeOf((*MockGetPermission)(nil).FindOne), ctx, query)
|
||||
}
|
||||
|
||||
// GetAll mocks base method.
|
||||
func (m *MockGetPermission) GetAll(ctx context.Context, status *permission.Status) ([]entity.Permission, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "GetAll", ctx, status)
|
||||
ret0, _ := ret[0].([]entity.Permission)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// GetAll indicates an expected call of GetAll.
|
||||
func (mr *MockGetPermissionMockRecorder) GetAll(ctx, status any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAll", reflect.TypeOf((*MockGetPermission)(nil).GetAll), ctx, status)
|
||||
}
|
||||
|
||||
// GetAllIntoIDMap mocks base method.
|
||||
func (m *MockGetPermission) GetAllIntoIDMap(ctx context.Context, status *permission.Status) (map[string]entity.Permission, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "GetAllIntoIDMap", ctx, status)
|
||||
ret0, _ := ret[0].(map[string]entity.Permission)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// GetAllIntoIDMap indicates an expected call of GetAllIntoIDMap.
|
||||
func (mr *MockGetPermissionMockRecorder) GetAllIntoIDMap(ctx, status any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAllIntoIDMap", reflect.TypeOf((*MockGetPermission)(nil).GetAllIntoIDMap), ctx, status)
|
||||
}
|
||||
|
||||
// MockIndex is a mock of Index interface.
|
||||
type MockIndex struct {
|
||||
ctrl *gomock.Controller
|
||||
recorder *MockIndexMockRecorder
|
||||
isgomock struct{}
|
||||
}
|
||||
|
||||
// MockIndexMockRecorder is the mock recorder for MockIndex.
|
||||
type MockIndexMockRecorder struct {
|
||||
mock *MockIndex
|
||||
}
|
||||
|
||||
// NewMockIndex creates a new mock instance.
|
||||
func NewMockIndex(ctrl *gomock.Controller) *MockIndex {
|
||||
mock := &MockIndex{ctrl: ctrl}
|
||||
mock.recorder = &MockIndexMockRecorder{mock}
|
||||
return mock
|
||||
}
|
||||
|
||||
// EXPECT returns an object that allows the caller to indicate expected use.
|
||||
func (m *MockIndex) EXPECT() *MockIndexMockRecorder {
|
||||
return m.recorder
|
||||
}
|
||||
|
||||
// Index20250214UP mocks base method.
|
||||
func (m *MockIndex) Index20250214UP(ctx context.Context) (*mongo.Cursor, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Index20250214UP", ctx)
|
||||
ret0, _ := ret[0].(*mongo.Cursor)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// Index20250214UP indicates an expected call of Index20250214UP.
|
||||
func (mr *MockIndexMockRecorder) Index20250214UP(ctx any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Index20250214UP", reflect.TypeOf((*MockIndex)(nil).Index20250214UP), ctx)
|
||||
}
|
|
@ -0,0 +1,201 @@
|
|||
// Code generated by MockGen. DO NOT EDIT.
|
||||
// Source: ./pkg/domain/repository/role.go
|
||||
//
|
||||
// Generated by this command:
|
||||
//
|
||||
// mockgen -source=./pkg/domain/repository/role.go -destination=./pkg/mock/repository/role.go -package=mock
|
||||
//
|
||||
|
||||
// Package mock is a generated GoMock package.
|
||||
package mock
|
||||
|
||||
import (
|
||||
context "context"
|
||||
reflect "reflect"
|
||||
|
||||
entity "code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/entity"
|
||||
repository "code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/repository"
|
||||
mongo "go.mongodb.org/mongo-driver/mongo"
|
||||
gomock "go.uber.org/mock/gomock"
|
||||
)
|
||||
|
||||
// MockRoleRepository is a mock of RoleRepository interface.
|
||||
type MockRoleRepository struct {
|
||||
ctrl *gomock.Controller
|
||||
recorder *MockRoleRepositoryMockRecorder
|
||||
isgomock struct{}
|
||||
}
|
||||
|
||||
// MockRoleRepositoryMockRecorder is the mock recorder for MockRoleRepository.
|
||||
type MockRoleRepositoryMockRecorder struct {
|
||||
mock *MockRoleRepository
|
||||
}
|
||||
|
||||
// NewMockRoleRepository creates a new mock instance.
|
||||
func NewMockRoleRepository(ctrl *gomock.Controller) *MockRoleRepository {
|
||||
mock := &MockRoleRepository{ctrl: ctrl}
|
||||
mock.recorder = &MockRoleRepositoryMockRecorder{mock}
|
||||
return mock
|
||||
}
|
||||
|
||||
// EXPECT returns an object that allows the caller to indicate expected use.
|
||||
func (m *MockRoleRepository) EXPECT() *MockRoleRepositoryMockRecorder {
|
||||
return m.recorder
|
||||
}
|
||||
|
||||
// All mocks base method.
|
||||
func (m *MockRoleRepository) All(ctx context.Context, clientID *string) ([]*entity.Role, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "All", ctx, clientID)
|
||||
ret0, _ := ret[0].([]*entity.Role)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// All indicates an expected call of All.
|
||||
func (mr *MockRoleRepositoryMockRecorder) All(ctx, clientID any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "All", reflect.TypeOf((*MockRoleRepository)(nil).All), ctx, clientID)
|
||||
}
|
||||
|
||||
// Create mocks base method.
|
||||
func (m *MockRoleRepository) Create(ctx context.Context, role *entity.Role) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Create", ctx, role)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Create indicates an expected call of Create.
|
||||
func (mr *MockRoleRepositoryMockRecorder) Create(ctx, role any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Create", reflect.TypeOf((*MockRoleRepository)(nil).Create), ctx, role)
|
||||
}
|
||||
|
||||
// Delete mocks base method.
|
||||
func (m *MockRoleRepository) Delete(ctx context.Context, id string) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Delete", ctx, id)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Delete indicates an expected call of Delete.
|
||||
func (mr *MockRoleRepositoryMockRecorder) Delete(ctx, id any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockRoleRepository)(nil).Delete), ctx, id)
|
||||
}
|
||||
|
||||
// GetByID mocks base method.
|
||||
func (m *MockRoleRepository) GetByID(ctx context.Context, id string) (*entity.Role, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "GetByID", ctx, id)
|
||||
ret0, _ := ret[0].(*entity.Role)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// GetByID indicates an expected call of GetByID.
|
||||
func (mr *MockRoleRepositoryMockRecorder) GetByID(ctx, id any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetByID", reflect.TypeOf((*MockRoleRepository)(nil).GetByID), ctx, id)
|
||||
}
|
||||
|
||||
// GetByUID mocks base method.
|
||||
func (m *MockRoleRepository) GetByUID(ctx context.Context, uid string) (*entity.Role, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "GetByUID", ctx, uid)
|
||||
ret0, _ := ret[0].(*entity.Role)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// GetByUID indicates an expected call of GetByUID.
|
||||
func (mr *MockRoleRepositoryMockRecorder) GetByUID(ctx, uid any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetByUID", reflect.TypeOf((*MockRoleRepository)(nil).GetByUID), ctx, uid)
|
||||
}
|
||||
|
||||
// Index20250224UP mocks base method.
|
||||
func (m *MockRoleRepository) Index20250224UP(ctx context.Context) (*mongo.Cursor, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Index20250224UP", ctx)
|
||||
ret0, _ := ret[0].(*mongo.Cursor)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// Index20250224UP indicates an expected call of Index20250224UP.
|
||||
func (mr *MockRoleRepositoryMockRecorder) Index20250224UP(ctx any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Index20250224UP", reflect.TypeOf((*MockRoleRepository)(nil).Index20250224UP), ctx)
|
||||
}
|
||||
|
||||
// List mocks base method.
|
||||
func (m *MockRoleRepository) List(ctx context.Context, param repository.ListQuery) ([]*entity.Role, int64, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "List", ctx, param)
|
||||
ret0, _ := ret[0].([]*entity.Role)
|
||||
ret1, _ := ret[1].(int64)
|
||||
ret2, _ := ret[2].(error)
|
||||
return ret0, ret1, ret2
|
||||
}
|
||||
|
||||
// List indicates an expected call of List.
|
||||
func (mr *MockRoleRepositoryMockRecorder) List(ctx, param any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockRoleRepository)(nil).List), ctx, param)
|
||||
}
|
||||
|
||||
// Update mocks base method.
|
||||
func (m *MockRoleRepository) Update(ctx context.Context, data repository.UpdateReq) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Update", ctx, data)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Update indicates an expected call of Update.
|
||||
func (mr *MockRoleRepositoryMockRecorder) Update(ctx, data any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockRoleRepository)(nil).Update), ctx, data)
|
||||
}
|
||||
|
||||
// MockRoleIndex is a mock of RoleIndex interface.
|
||||
type MockRoleIndex struct {
|
||||
ctrl *gomock.Controller
|
||||
recorder *MockRoleIndexMockRecorder
|
||||
isgomock struct{}
|
||||
}
|
||||
|
||||
// MockRoleIndexMockRecorder is the mock recorder for MockRoleIndex.
|
||||
type MockRoleIndexMockRecorder struct {
|
||||
mock *MockRoleIndex
|
||||
}
|
||||
|
||||
// NewMockRoleIndex creates a new mock instance.
|
||||
func NewMockRoleIndex(ctrl *gomock.Controller) *MockRoleIndex {
|
||||
mock := &MockRoleIndex{ctrl: ctrl}
|
||||
mock.recorder = &MockRoleIndexMockRecorder{mock}
|
||||
return mock
|
||||
}
|
||||
|
||||
// EXPECT returns an object that allows the caller to indicate expected use.
|
||||
func (m *MockRoleIndex) EXPECT() *MockRoleIndexMockRecorder {
|
||||
return m.recorder
|
||||
}
|
||||
|
||||
// Index20250224UP mocks base method.
|
||||
func (m *MockRoleIndex) Index20250224UP(ctx context.Context) (*mongo.Cursor, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Index20250224UP", ctx)
|
||||
ret0, _ := ret[0].(*mongo.Cursor)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// Index20250224UP indicates an expected call of Index20250224UP.
|
||||
func (mr *MockRoleIndexMockRecorder) Index20250224UP(ctx any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Index20250224UP", reflect.TypeOf((*MockRoleIndex)(nil).Index20250224UP), ctx)
|
||||
}
|
|
@ -0,0 +1,155 @@
|
|||
// Code generated by MockGen. DO NOT EDIT.
|
||||
// Source: ./pkg/domain/repository/role_permission.go
|
||||
//
|
||||
// Generated by this command:
|
||||
//
|
||||
// mockgen -source=./pkg/domain/repository/role_permission.go -destination=./pkg/mock/repository/role_permission.go -package=mock
|
||||
//
|
||||
|
||||
// Package mock is a generated GoMock package.
|
||||
package mock
|
||||
|
||||
import (
|
||||
context "context"
|
||||
reflect "reflect"
|
||||
|
||||
entity "code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/entity"
|
||||
mongo "go.mongodb.org/mongo-driver/mongo"
|
||||
gomock "go.uber.org/mock/gomock"
|
||||
)
|
||||
|
||||
// MockRolePermissionRepository is a mock of RolePermissionRepository interface.
|
||||
type MockRolePermissionRepository struct {
|
||||
ctrl *gomock.Controller
|
||||
recorder *MockRolePermissionRepositoryMockRecorder
|
||||
isgomock struct{}
|
||||
}
|
||||
|
||||
// MockRolePermissionRepositoryMockRecorder is the mock recorder for MockRolePermissionRepository.
|
||||
type MockRolePermissionRepositoryMockRecorder struct {
|
||||
mock *MockRolePermissionRepository
|
||||
}
|
||||
|
||||
// NewMockRolePermissionRepository creates a new mock instance.
|
||||
func NewMockRolePermissionRepository(ctrl *gomock.Controller) *MockRolePermissionRepository {
|
||||
mock := &MockRolePermissionRepository{ctrl: ctrl}
|
||||
mock.recorder = &MockRolePermissionRepositoryMockRecorder{mock}
|
||||
return mock
|
||||
}
|
||||
|
||||
// EXPECT returns an object that allows the caller to indicate expected use.
|
||||
func (m *MockRolePermissionRepository) EXPECT() *MockRolePermissionRepositoryMockRecorder {
|
||||
return m.recorder
|
||||
}
|
||||
|
||||
// Create mocks base method.
|
||||
func (m *MockRolePermissionRepository) Create(ctx context.Context, entity entity.RolePermission) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Create", ctx, entity)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Create indicates an expected call of Create.
|
||||
func (mr *MockRolePermissionRepositoryMockRecorder) Create(ctx, entity any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Create", reflect.TypeOf((*MockRolePermissionRepository)(nil).Create), ctx, entity)
|
||||
}
|
||||
|
||||
// Delete mocks base method.
|
||||
func (m *MockRolePermissionRepository) Delete(ctx context.Context, roleID, permission string) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Delete", ctx, roleID, permission)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Delete indicates an expected call of Delete.
|
||||
func (mr *MockRolePermissionRepositoryMockRecorder) Delete(ctx, roleID, permission any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockRolePermissionRepository)(nil).Delete), ctx, roleID, permission)
|
||||
}
|
||||
|
||||
// Get mocks base method.
|
||||
func (m *MockRolePermissionRepository) Get(ctx context.Context, roleID string) ([]*entity.RolePermission, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Get", ctx, roleID)
|
||||
ret0, _ := ret[0].([]*entity.RolePermission)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// Get indicates an expected call of Get.
|
||||
func (mr *MockRolePermissionRepositoryMockRecorder) Get(ctx, roleID any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockRolePermissionRepository)(nil).Get), ctx, roleID)
|
||||
}
|
||||
|
||||
// GetByPermissionID mocks base method.
|
||||
func (m *MockRolePermissionRepository) GetByPermissionID(ctx context.Context, permissionIDs []string) ([]*entity.RolePermission, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "GetByPermissionID", ctx, permissionIDs)
|
||||
ret0, _ := ret[0].([]*entity.RolePermission)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// GetByPermissionID indicates an expected call of GetByPermissionID.
|
||||
func (mr *MockRolePermissionRepositoryMockRecorder) GetByPermissionID(ctx, permissionIDs any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetByPermissionID", reflect.TypeOf((*MockRolePermissionRepository)(nil).GetByPermissionID), ctx, permissionIDs)
|
||||
}
|
||||
|
||||
// Index20250225UP mocks base method.
|
||||
func (m *MockRolePermissionRepository) Index20250225UP(ctx context.Context) (*mongo.Cursor, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Index20250225UP", ctx)
|
||||
ret0, _ := ret[0].(*mongo.Cursor)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// Index20250225UP indicates an expected call of Index20250225UP.
|
||||
func (mr *MockRolePermissionRepositoryMockRecorder) Index20250225UP(ctx any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Index20250225UP", reflect.TypeOf((*MockRolePermissionRepository)(nil).Index20250225UP), ctx)
|
||||
}
|
||||
|
||||
// MockRolePermissionIndex is a mock of RolePermissionIndex interface.
|
||||
type MockRolePermissionIndex struct {
|
||||
ctrl *gomock.Controller
|
||||
recorder *MockRolePermissionIndexMockRecorder
|
||||
isgomock struct{}
|
||||
}
|
||||
|
||||
// MockRolePermissionIndexMockRecorder is the mock recorder for MockRolePermissionIndex.
|
||||
type MockRolePermissionIndexMockRecorder struct {
|
||||
mock *MockRolePermissionIndex
|
||||
}
|
||||
|
||||
// NewMockRolePermissionIndex creates a new mock instance.
|
||||
func NewMockRolePermissionIndex(ctrl *gomock.Controller) *MockRolePermissionIndex {
|
||||
mock := &MockRolePermissionIndex{ctrl: ctrl}
|
||||
mock.recorder = &MockRolePermissionIndexMockRecorder{mock}
|
||||
return mock
|
||||
}
|
||||
|
||||
// EXPECT returns an object that allows the caller to indicate expected use.
|
||||
func (m *MockRolePermissionIndex) EXPECT() *MockRolePermissionIndexMockRecorder {
|
||||
return m.recorder
|
||||
}
|
||||
|
||||
// Index20250225UP mocks base method.
|
||||
func (m *MockRolePermissionIndex) Index20250225UP(ctx context.Context) (*mongo.Cursor, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Index20250225UP", ctx)
|
||||
ret0, _ := ret[0].(*mongo.Cursor)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// Index20250225UP indicates an expected call of Index20250225UP.
|
||||
func (mr *MockRolePermissionIndexMockRecorder) Index20250225UP(ctx any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Index20250225UP", reflect.TypeOf((*MockRolePermissionIndex)(nil).Index20250225UP), ctx)
|
||||
}
|
|
@ -0,0 +1,187 @@
|
|||
// Code generated by MockGen. DO NOT EDIT.
|
||||
// Source: ./pkg/domain/repository/user_role.go
|
||||
//
|
||||
// Generated by this command:
|
||||
//
|
||||
// mockgen -source=./pkg/domain/repository/user_role.go -destination=./pkg/mock/repository/user_role.go -package=mock
|
||||
//
|
||||
|
||||
// Package mock is a generated GoMock package.
|
||||
package mock
|
||||
|
||||
import (
|
||||
context "context"
|
||||
reflect "reflect"
|
||||
|
||||
entity "code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/entity"
|
||||
repository "code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/repository"
|
||||
mongo "go.mongodb.org/mongo-driver/mongo"
|
||||
gomock "go.uber.org/mock/gomock"
|
||||
)
|
||||
|
||||
// MockUserRoleRepository is a mock of UserRoleRepository interface.
|
||||
type MockUserRoleRepository struct {
|
||||
ctrl *gomock.Controller
|
||||
recorder *MockUserRoleRepositoryMockRecorder
|
||||
isgomock struct{}
|
||||
}
|
||||
|
||||
// MockUserRoleRepositoryMockRecorder is the mock recorder for MockUserRoleRepository.
|
||||
type MockUserRoleRepositoryMockRecorder struct {
|
||||
mock *MockUserRoleRepository
|
||||
}
|
||||
|
||||
// NewMockUserRoleRepository creates a new mock instance.
|
||||
func NewMockUserRoleRepository(ctrl *gomock.Controller) *MockUserRoleRepository {
|
||||
mock := &MockUserRoleRepository{ctrl: ctrl}
|
||||
mock.recorder = &MockUserRoleRepositoryMockRecorder{mock}
|
||||
return mock
|
||||
}
|
||||
|
||||
// EXPECT returns an object that allows the caller to indicate expected use.
|
||||
func (m *MockUserRoleRepository) EXPECT() *MockUserRoleRepositoryMockRecorder {
|
||||
return m.recorder
|
||||
}
|
||||
|
||||
// CountUsersByRole mocks base method.
|
||||
func (m *MockUserRoleRepository) CountUsersByRole(ctx context.Context) ([]repository.RoleUserCount, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "CountUsersByRole", ctx)
|
||||
ret0, _ := ret[0].([]repository.RoleUserCount)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// CountUsersByRole indicates an expected call of CountUsersByRole.
|
||||
func (mr *MockUserRoleRepositoryMockRecorder) CountUsersByRole(ctx any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CountUsersByRole", reflect.TypeOf((*MockUserRoleRepository)(nil).CountUsersByRole), ctx)
|
||||
}
|
||||
|
||||
// CreateUserRole mocks base method.
|
||||
func (m *MockUserRoleRepository) CreateUserRole(ctx context.Context, param entity.UserRole) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "CreateUserRole", ctx, param)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// CreateUserRole indicates an expected call of CreateUserRole.
|
||||
func (mr *MockUserRoleRepositoryMockRecorder) CreateUserRole(ctx, param any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateUserRole", reflect.TypeOf((*MockUserRoleRepository)(nil).CreateUserRole), ctx, param)
|
||||
}
|
||||
|
||||
// GetAll mocks base method.
|
||||
func (m *MockUserRoleRepository) GetAll(ctx context.Context) ([]*entity.UserRole, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "GetAll", ctx)
|
||||
ret0, _ := ret[0].([]*entity.UserRole)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// GetAll indicates an expected call of GetAll.
|
||||
func (mr *MockUserRoleRepositoryMockRecorder) GetAll(ctx any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAll", reflect.TypeOf((*MockUserRoleRepository)(nil).GetAll), ctx)
|
||||
}
|
||||
|
||||
// GetByUserID mocks base method.
|
||||
func (m *MockUserRoleRepository) GetByUserID(ctx context.Context, uid string) (entity.UserRole, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "GetByUserID", ctx, uid)
|
||||
ret0, _ := ret[0].(entity.UserRole)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// GetByUserID indicates an expected call of GetByUserID.
|
||||
func (mr *MockUserRoleRepositoryMockRecorder) GetByUserID(ctx, uid any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetByUserID", reflect.TypeOf((*MockUserRoleRepository)(nil).GetByUserID), ctx, uid)
|
||||
}
|
||||
|
||||
// GetUsersByRoleID mocks base method.
|
||||
func (m *MockUserRoleRepository) GetUsersByRoleID(ctx context.Context, roleID string) ([]entity.UserRole, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "GetUsersByRoleID", ctx, roleID)
|
||||
ret0, _ := ret[0].([]entity.UserRole)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// GetUsersByRoleID indicates an expected call of GetUsersByRoleID.
|
||||
func (mr *MockUserRoleRepositoryMockRecorder) GetUsersByRoleID(ctx, roleID any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetUsersByRoleID", reflect.TypeOf((*MockUserRoleRepository)(nil).GetUsersByRoleID), ctx, roleID)
|
||||
}
|
||||
|
||||
// Index20250225UP mocks base method.
|
||||
func (m *MockUserRoleRepository) Index20250225UP(ctx context.Context) (*mongo.Cursor, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Index20250225UP", ctx)
|
||||
ret0, _ := ret[0].(*mongo.Cursor)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// Index20250225UP indicates an expected call of Index20250225UP.
|
||||
func (mr *MockUserRoleRepositoryMockRecorder) Index20250225UP(ctx any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Index20250225UP", reflect.TypeOf((*MockUserRoleRepository)(nil).Index20250225UP), ctx)
|
||||
}
|
||||
|
||||
// UpdateUserRole mocks base method.
|
||||
func (m *MockUserRoleRepository) UpdateUserRole(ctx context.Context, uid, roleID string) (entity.UserRole, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "UpdateUserRole", ctx, uid, roleID)
|
||||
ret0, _ := ret[0].(entity.UserRole)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// UpdateUserRole indicates an expected call of UpdateUserRole.
|
||||
func (mr *MockUserRoleRepositoryMockRecorder) UpdateUserRole(ctx, uid, roleID any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateUserRole", reflect.TypeOf((*MockUserRoleRepository)(nil).UpdateUserRole), ctx, uid, roleID)
|
||||
}
|
||||
|
||||
// MockUserRoleIndex is a mock of UserRoleIndex interface.
|
||||
type MockUserRoleIndex struct {
|
||||
ctrl *gomock.Controller
|
||||
recorder *MockUserRoleIndexMockRecorder
|
||||
isgomock struct{}
|
||||
}
|
||||
|
||||
// MockUserRoleIndexMockRecorder is the mock recorder for MockUserRoleIndex.
|
||||
type MockUserRoleIndexMockRecorder struct {
|
||||
mock *MockUserRoleIndex
|
||||
}
|
||||
|
||||
// NewMockUserRoleIndex creates a new mock instance.
|
||||
func NewMockUserRoleIndex(ctrl *gomock.Controller) *MockUserRoleIndex {
|
||||
mock := &MockUserRoleIndex{ctrl: ctrl}
|
||||
mock.recorder = &MockUserRoleIndexMockRecorder{mock}
|
||||
return mock
|
||||
}
|
||||
|
||||
// EXPECT returns an object that allows the caller to indicate expected use.
|
||||
func (m *MockUserRoleIndex) EXPECT() *MockUserRoleIndexMockRecorder {
|
||||
return m.recorder
|
||||
}
|
||||
|
||||
// Index20250225UP mocks base method.
|
||||
func (m *MockUserRoleIndex) Index20250225UP(ctx context.Context) (*mongo.Cursor, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Index20250225UP", ctx)
|
||||
ret0, _ := ret[0].(*mongo.Cursor)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// Index20250225UP indicates an expected call of Index20250225UP.
|
||||
func (mr *MockUserRoleIndexMockRecorder) Index20250225UP(ctx any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Index20250225UP", reflect.TypeOf((*MockUserRoleIndex)(nil).Index20250225UP), ctx)
|
||||
}
|
|
@ -1,15 +1,16 @@
|
|||
package repository
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"time"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain"
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/rbac"
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/repository"
|
||||
"context"
|
||||
"encoding/json"
|
||||
"github.com/casbin/casbin/v2/model"
|
||||
"github.com/casbin/casbin/v2/persist"
|
||||
"github.com/zeromicro/go-zero/core/stores/redis"
|
||||
"time"
|
||||
)
|
||||
|
||||
type RBACAdapterParam struct {
|
||||
|
@ -144,6 +145,6 @@ func (adapter *rbacAdapter) RemovePolicy(_ string, policyType string, rule []str
|
|||
}
|
||||
|
||||
// RemoveFilteredPolicy 沒用到先不實作
|
||||
func (adapter *rbacAdapter) RemoveFilteredPolicy(_ string, policyType string, fieldIndex int, fieldValues ...string) error {
|
||||
func (adapter *rbacAdapter) RemoveFilteredPolicy(_ string, _ string, _ int, _ ...string) error {
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -1,13 +1,14 @@
|
|||
package repository
|
||||
|
||||
import (
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain"
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/rbac"
|
||||
"context"
|
||||
"encoding/json"
|
||||
"testing"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain"
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/rbac"
|
||||
"github.com/casbin/casbin/v2/model"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func Test_rbacAdapter_AddPolicy(t *testing.T) {
|
||||
|
|
|
@ -2,6 +2,7 @@ package repository
|
|||
|
||||
import (
|
||||
"errors"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/stores/mon"
|
||||
)
|
||||
|
||||
|
|
|
@ -1,17 +1,18 @@
|
|||
package repository
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/entity"
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/permission"
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/repository"
|
||||
mgo "code.30cm.net/digimon/library-go/mongo"
|
||||
"context"
|
||||
"github.com/zeromicro/go-zero/core/stores/mon"
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
"go.mongodb.org/mongo-driver/mongo"
|
||||
"go.mongodb.org/mongo-driver/mongo/options"
|
||||
"time"
|
||||
)
|
||||
|
||||
type PermissionRepositoryParam struct {
|
||||
|
|
|
@ -1,15 +1,16 @@
|
|||
package repository
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/entity"
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/permission"
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/repository"
|
||||
mgo "code.30cm.net/digimon/library-go/mongo"
|
||||
"context"
|
||||
"fmt"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func SetupTestPermissionRepository(db string) (repository.PermissionRepository, func(), error) {
|
||||
|
|
|
@ -1,17 +1,18 @@
|
|||
package repository
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/entity"
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/repository"
|
||||
mgo "code.30cm.net/digimon/library-go/mongo"
|
||||
"context"
|
||||
"fmt"
|
||||
"github.com/zeromicro/go-zero/core/stores/mon"
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
"go.mongodb.org/mongo-driver/mongo"
|
||||
"go.mongodb.org/mongo-driver/mongo/options"
|
||||
"time"
|
||||
)
|
||||
|
||||
type RoleRepositoryParam struct {
|
||||
|
|
|
@ -1,15 +1,16 @@
|
|||
package repository
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/entity"
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/repository"
|
||||
mgo "code.30cm.net/digimon/library-go/mongo"
|
||||
"context"
|
||||
"github.com/zeromicro/go-zero/core/stores/mon"
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
"go.mongodb.org/mongo-driver/mongo"
|
||||
"time"
|
||||
)
|
||||
|
||||
type RolePermissionRepositoryParam struct {
|
||||
|
|
|
@ -1,15 +1,16 @@
|
|||
package repository
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/entity"
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/repository"
|
||||
mgo "code.30cm.net/digimon/library-go/mongo"
|
||||
"context"
|
||||
"fmt"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func SetupTestRolePermissionRepository(db string) (repository.RolePermissionRepository, func(), error) {
|
||||
|
|
|
@ -1,15 +1,16 @@
|
|||
package repository
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/entity"
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/permission"
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/repository"
|
||||
mgo "code.30cm.net/digimon/library-go/mongo"
|
||||
"context"
|
||||
"fmt"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func SetupTestRoleRepository(db string) (repository.RoleRepository, func(), error) {
|
||||
|
|
|
@ -47,6 +47,7 @@ func (repo *TokenRepository) setRefreshToken(ctx context.Context, tx redis.Pipel
|
|||
if token.RefreshToken == "" {
|
||||
return nil
|
||||
}
|
||||
|
||||
return tx.Set(ctx, domain.GetRefreshTokenRedisKey(token.RefreshToken), token.ID, ttl).Err()
|
||||
}
|
||||
|
||||
|
@ -110,6 +111,7 @@ func (repo *TokenRepository) getTokensBySet(ctx context.Context, setKey string)
|
|||
if errors.Is(err, redis.Nil) {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
return nil, err
|
||||
}
|
||||
|
||||
|
@ -120,11 +122,13 @@ func (repo *TokenRepository) getTokensBySet(ctx context.Context, setKey string)
|
|||
token, err := repo.retrieveToken(ctx, domain.GetAccessTokenRedisKey(id))
|
||||
if err != nil {
|
||||
tokensToDelete = append(tokensToDelete, id)
|
||||
|
||||
continue
|
||||
}
|
||||
|
||||
if token.ExpiresIn < now {
|
||||
tokensToDelete = append(tokensToDelete, id)
|
||||
|
||||
continue
|
||||
}
|
||||
tokens = append(tokens, token)
|
||||
|
@ -174,6 +178,7 @@ func (repo *TokenRepository) batchDeleteKeys(ctx context.Context, keys ...string
|
|||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
@ -200,6 +205,7 @@ func (repo *TokenRepository) Create(ctx context.Context, token entity.Token) err
|
|||
if err := repo.setTokenRelation(ctx, tx, token.UID, token.DeviceID, token.ID, refreshTTL); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
@ -212,6 +218,7 @@ func (repo *TokenRepository) CreateOneTimeToken(ctx context.Context, key string,
|
|||
}
|
||||
|
||||
_, err = repo.Redis.SetnxExCtx(ctx, domain.GetRefreshTokenRedisKey(key), string(body), int(dt.Seconds()))
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -251,6 +258,7 @@ func (repo *TokenRepository) Delete(ctx context.Context, token entity.Token) err
|
|||
domain.GetAccessTokenRedisKey(token.ID),
|
||||
domain.GetRefreshTokenRedisKey(token.RefreshToken),
|
||||
}
|
||||
|
||||
return repo.deleteKeysAndRelations(ctx, keys, token.UID, token.DeviceID, token.ID)
|
||||
}
|
||||
|
||||
|
@ -267,6 +275,7 @@ func (repo *TokenRepository) DeleteAccessTokenByID(ctx context.Context, ids []st
|
|||
}
|
||||
_ = repo.deleteKeysAndRelations(ctx, keys, token.UID, token.DeviceID, token.ID)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -281,6 +290,7 @@ func (repo *TokenRepository) DeleteAccessTokensByUID(ctx context.Context, uid st
|
|||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -303,6 +313,7 @@ func (repo *TokenRepository) DeleteAccessTokensByDeviceID(ctx context.Context, d
|
|||
for _, token := range tokens {
|
||||
_ = tx.SRem(ctx, domain.GetUIDTokenRedisKey(token.UID), token.ID)
|
||||
}
|
||||
|
||||
return nil
|
||||
}); err != nil {
|
||||
return err
|
||||
|
@ -313,6 +324,7 @@ func (repo *TokenRepository) DeleteAccessTokensByDeviceID(ctx context.Context, d
|
|||
}
|
||||
|
||||
_, err = repo.Redis.Del(domain.GetDeviceTokenRedisKey(deviceID))
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
|
|
|
@ -1,16 +1,17 @@
|
|||
package repository
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/entity"
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/repository"
|
||||
mgo "code.30cm.net/digimon/library-go/mongo"
|
||||
"context"
|
||||
"fmt"
|
||||
"github.com/zeromicro/go-zero/core/stores/mon"
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
"go.mongodb.org/mongo-driver/mongo"
|
||||
"time"
|
||||
)
|
||||
|
||||
// UserRoleRepositoryParam 定義 MongoDB 配置參數
|
||||
|
@ -106,6 +107,7 @@ func (repo *userRoleRepository) CreateUserRole(ctx context.Context, param entity
|
|||
}
|
||||
|
||||
_, err := repo.DB.GetClient().InsertOne(ctx, param)
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -128,10 +130,9 @@ func (repo *userRoleRepository) UpdateUserRole(ctx context.Context, uid, roleID
|
|||
return updated, nil
|
||||
}
|
||||
|
||||
|
||||
func (repo *userRoleRepository) Index20250225UP(ctx context.Context) (*mongo.Cursor, error) {
|
||||
repo.DB.PopulateIndex(ctx, "role_id", 1, false)
|
||||
repo.DB.PopulateIndex(ctx, "uid", 1, false)
|
||||
repo.DB.PopulateIndex(ctx, "uid", 1, true)
|
||||
|
||||
return repo.DB.GetClient().Indexes().List(ctx)
|
||||
}
|
||||
|
|
|
@ -1,15 +1,16 @@
|
|||
package repository
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/entity"
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/repository"
|
||||
mgo "code.30cm.net/digimon/library-go/mongo"
|
||||
"context"
|
||||
"fmt"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func SetupTestUserRoleRepository(db string) (repository.UserRoleRepository, func(), error) {
|
||||
|
|
|
@ -1,6 +1,12 @@
|
|||
package usecase
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain"
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/entity"
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/permission"
|
||||
|
@ -8,14 +14,9 @@ import (
|
|||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/usecase"
|
||||
"code.30cm.net/digimon/library-go/errs"
|
||||
"code.30cm.net/digimon/library-go/errs/code"
|
||||
"context"
|
||||
"fmt"
|
||||
"github.com/casbin/casbin/v2"
|
||||
"github.com/casbin/casbin/v2/model"
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
"log"
|
||||
"net/http"
|
||||
"time"
|
||||
)
|
||||
|
||||
type RBACUseCaseParam struct {
|
||||
|
@ -35,7 +36,7 @@ type RBACUseCase struct {
|
|||
instance *casbin.Enforcer
|
||||
}
|
||||
|
||||
func NewUseCase(param RBACUseCaseParam) usecase.RBACUseCase {
|
||||
func NewRBACUseCase(param RBACUseCaseParam) usecase.RBACUseCase {
|
||||
result := &RBACUseCase{
|
||||
adapter: param.RBACRedisAdapter,
|
||||
permissionRepo: param.permissionRepo,
|
||||
|
@ -89,7 +90,6 @@ func (use *RBACUseCase) Check(ctx context.Context, role, path, method string) (u
|
|||
return usecase.CheckRolePermissionStatus{}, err
|
||||
}
|
||||
status.Select.PlainCode = policy
|
||||
|
||||
}
|
||||
|
||||
limit := 4
|
||||
|
@ -168,7 +168,7 @@ func (use *RBACUseCase) LoadPolicy(ctx context.Context) error {
|
|||
continue
|
||||
}
|
||||
|
||||
_, err = use.instance.AddPolicy(r.UID, p.HTTPPath, p.HTTPMethod, p.Name)
|
||||
_, err = use.instance.AddPolicy(r.Name, p.HTTPPath, p.HTTPMethod, p.Name)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -1 +1,119 @@
|
|||
package usecase
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/entity"
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/permission"
|
||||
mock "code.30cm.net/digimon/app-cloudep-permission-server/pkg/mock/repository"
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/repository"
|
||||
"github.com/alicebob/miniredis/v2"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/zeromicro/go-zero/core/stores/redis"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
"go.uber.org/mock/gomock"
|
||||
)
|
||||
|
||||
func setupMiniRedis() (*miniredis.Miniredis, *redis.Redis) {
|
||||
// 啟動 setupMiniRedis 作為模擬的 Redis 服務
|
||||
mr, err := miniredis.Run()
|
||||
if err != nil {
|
||||
panic("failed to start miniRedis: " + err.Error())
|
||||
}
|
||||
|
||||
// 使用 setupMiniRedis 的地址配置 go-zero Redis 客戶端
|
||||
redisConf := redis.RedisConf{
|
||||
Host: mr.Addr(),
|
||||
Type: "node",
|
||||
}
|
||||
r := redis.MustNewRedis(redisConf)
|
||||
|
||||
return mr, r
|
||||
}
|
||||
|
||||
func TestNewRBACUseCase_LoadPolicy(t *testing.T) {
|
||||
// 固定發行者設定,測試中會用來驗證 claims.Issuer
|
||||
mockCtrl := gomock.NewController(t)
|
||||
defer mockCtrl.Finish()
|
||||
|
||||
// 準備測試資料
|
||||
permID, _ := primitive.ObjectIDFromHex("507f1f77bcf86cd799439011")
|
||||
permissionData := entity.Permission{
|
||||
ID: permID,
|
||||
Parent: "",
|
||||
Name: "read_perm",
|
||||
HTTPMethod: http.MethodGet,
|
||||
HTTPPath: "/resource",
|
||||
Status: permission.Open, // 1: 啟用
|
||||
// 其他欄位可以隨便填上
|
||||
CreateAt: time.Now().Unix(),
|
||||
UpdateAt: time.Now().Unix(),
|
||||
}
|
||||
|
||||
roleID, _ := primitive.ObjectIDFromHex("507f1f77bcf86cd799439012")
|
||||
roleData := &entity.Role{
|
||||
ID: roleID,
|
||||
Name: "test_role",
|
||||
UID: "role1",
|
||||
ClientID: "client1",
|
||||
Status: permission.Open,
|
||||
CreateAt: time.Now().Unix(),
|
||||
UpdateAt: time.Now().Unix(),
|
||||
}
|
||||
|
||||
rolePermissionData := &entity.RolePermission{
|
||||
// 這裡 RoleID 與 PermissionID 皆以 Hex 字串儲存
|
||||
RoleID: roleID.Hex(),
|
||||
PermissionID: permID.Hex(),
|
||||
CreateAt: time.Now().Unix(),
|
||||
UpdateAt: time.Now().Unix(),
|
||||
}
|
||||
|
||||
// 建立 mock 物件,並設定期望值
|
||||
permissionRepo := mock.NewMockPermissionRepository(mockCtrl)
|
||||
roleRepo := mock.NewMockRoleRepository(mockCtrl)
|
||||
rolePermissionRepo := mock.NewMockRolePermissionRepository(mockCtrl)
|
||||
ctx := context.Background()
|
||||
permissionRepo.EXPECT().
|
||||
GetAll(ctx, nil).
|
||||
Return([]entity.Permission{permissionData}, nil)
|
||||
|
||||
roleRepo.EXPECT().
|
||||
All(ctx, nil).
|
||||
Return([]*entity.Role{roleData}, nil)
|
||||
|
||||
rolePermissionRepo.EXPECT().
|
||||
Get(ctx, roleID.Hex()).
|
||||
Return([]*entity.RolePermission{rolePermissionData}, nil)
|
||||
|
||||
// 建立 miniRedis 與 adapter
|
||||
mr, rdb := setupMiniRedis()
|
||||
defer mr.Close()
|
||||
|
||||
adapter, err := repository.NewRBACAdapter(repository.RBACAdapterParam{Redis: rdb})
|
||||
assert.NoError(t, err)
|
||||
|
||||
// 建立 RBACUseCase 測試實例
|
||||
uc := NewRBACUseCase(RBACUseCaseParam{
|
||||
ModulePath: "../../etc/rbac.conf", // 注意:確認路徑下有對應的模型檔
|
||||
permissionRepo: permissionRepo,
|
||||
roleRepo: roleRepo,
|
||||
rolePermission: rolePermissionRepo,
|
||||
RBACRedisAdapter: adapter,
|
||||
})
|
||||
|
||||
// 載入 policy
|
||||
err = uc.LoadPolicy(ctx)
|
||||
assert.NoError(t, err)
|
||||
|
||||
// 接下來測試 casbin 是否能正確檢查該權限
|
||||
status, err := uc.Check(ctx, roleData.Name, permissionData.HTTPPath, permissionData.HTTPMethod)
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, status.Allow)
|
||||
// 預期 PermissionName 為 "read_perm"
|
||||
assert.Equal(t, "read_perm", status.Select.PermissionName)
|
||||
|
||||
}
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
package usecase
|
||||
|
||||
import (
|
||||
"sync"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/entity"
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/permission"
|
||||
"sync"
|
||||
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
)
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
package usecase
|
||||
|
||||
import (
|
||||
"sync"
|
||||
"testing"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/entity"
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/permission"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
"sync"
|
||||
"testing"
|
||||
)
|
||||
|
||||
// TestGeneratePermissionTree 測試 GeneratePermissionTree 函數的建立樹功能
|
||||
|
|
|
@ -0,0 +1,235 @@
|
|||
package usecase
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain"
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/entity"
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/repository"
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/usecase"
|
||||
"code.30cm.net/digimon/library-go/errs"
|
||||
"code.30cm.net/digimon/library-go/errs/code"
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
type RoleUseCaseParam struct {
|
||||
roleRepository repository.RoleRepository
|
||||
}
|
||||
|
||||
type RoleUseCase struct {
|
||||
RoleUseCaseParam
|
||||
}
|
||||
|
||||
func NewRoleUseCase(param RoleUseCaseParam) usecase.RoleUseCase {
|
||||
return &RoleUseCase{
|
||||
RoleUseCaseParam: param,
|
||||
}
|
||||
}
|
||||
|
||||
func (use *RoleUseCase) List(ctx context.Context, param usecase.ListQuery) ([]usecase.Role, int64, error) {
|
||||
query := repository.ListQuery{
|
||||
PageSize: param.PageSize,
|
||||
PageIndex: param.PageIndex,
|
||||
ClientID: param.ClientID,
|
||||
Name: param.Name,
|
||||
UID: param.UID,
|
||||
Status: param.Status,
|
||||
}
|
||||
if param.UID != nil {
|
||||
query.UID = param.UID
|
||||
}
|
||||
|
||||
list, i, err := use.roleRepository.List(ctx, query)
|
||||
if err != nil {
|
||||
e := errs.DatabaseErrorWithScopeL(
|
||||
code.CloudEPPermission,
|
||||
domain.FailedToListRole,
|
||||
logx.WithContext(ctx),
|
||||
[]logx.LogField{
|
||||
{Key: "param", Value: param},
|
||||
{Key: "func", Value: "roleRepository.List"},
|
||||
{Key: "err", Value: err.Error()},
|
||||
},
|
||||
"failed to list role")
|
||||
|
||||
return nil, 0, e
|
||||
}
|
||||
|
||||
result := make([]usecase.Role, 0, len(list))
|
||||
|
||||
for _, item := range list {
|
||||
result = append(result, usecase.Role{
|
||||
ID: item.ID.Hex(),
|
||||
UID: item.UID,
|
||||
Name: item.Name,
|
||||
Status: item.Status,
|
||||
ClientID: item.ClientID,
|
||||
CreateAt: item.CreateAt,
|
||||
UpdateAt: item.UpdateAt,
|
||||
})
|
||||
}
|
||||
|
||||
return result, i, nil
|
||||
}
|
||||
|
||||
func (use *RoleUseCase) All(ctx context.Context, clientID *string) ([]usecase.Role, error) {
|
||||
all, err := use.roleRepository.All(ctx, clientID)
|
||||
if err != nil {
|
||||
e := errs.DatabaseErrorWithScopeL(
|
||||
code.CloudEPPermission,
|
||||
domain.FailedToListRole,
|
||||
logx.WithContext(ctx),
|
||||
[]logx.LogField{
|
||||
{Key: "clientID", Value: clientID},
|
||||
{Key: "func", Value: "roleRepository.All"},
|
||||
{Key: "err", Value: err.Error()},
|
||||
},
|
||||
"failed to get all role")
|
||||
|
||||
return nil, e
|
||||
}
|
||||
|
||||
result := make([]usecase.Role, 0, len(all))
|
||||
|
||||
for _, item := range all {
|
||||
result = append(result, usecase.Role{
|
||||
ID: item.ID.Hex(),
|
||||
UID: item.UID,
|
||||
Name: item.Name,
|
||||
Status: item.Status,
|
||||
ClientID: item.ClientID,
|
||||
CreateAt: item.CreateAt,
|
||||
UpdateAt: item.UpdateAt,
|
||||
})
|
||||
}
|
||||
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (use *RoleUseCase) GetByID(ctx context.Context, id string) (*usecase.Role, error) {
|
||||
byID, err := use.roleRepository.GetByID(ctx, id)
|
||||
if err != nil {
|
||||
e := errs.DatabaseErrorWithScopeL(
|
||||
code.CloudEPPermission,
|
||||
domain.FailedToGetRoleByID,
|
||||
logx.WithContext(ctx),
|
||||
[]logx.LogField{
|
||||
{Key: "id", Value: id},
|
||||
{Key: "func", Value: "roleRepository.GetByID"},
|
||||
{Key: "err", Value: err.Error()},
|
||||
},
|
||||
"failed to get role by id")
|
||||
|
||||
return nil, e
|
||||
}
|
||||
|
||||
return &usecase.Role{
|
||||
ID: byID.ID.Hex(),
|
||||
UID: byID.UID,
|
||||
Name: byID.Name,
|
||||
Status: byID.Status,
|
||||
ClientID: byID.ClientID,
|
||||
CreateAt: byID.CreateAt,
|
||||
UpdateAt: byID.UpdateAt,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (use *RoleUseCase) GetByUID(ctx context.Context, uid string) (*usecase.Role, error) {
|
||||
byUID, err := use.roleRepository.GetByUID(ctx, uid)
|
||||
if err != nil {
|
||||
e := errs.DatabaseErrorWithScopeL(
|
||||
code.CloudEPPermission,
|
||||
domain.FailedToGetRoleByUID,
|
||||
logx.WithContext(ctx),
|
||||
[]logx.LogField{
|
||||
{Key: "uid", Value: uid},
|
||||
{Key: "func", Value: "roleRepository.GetByUID"},
|
||||
{Key: "err", Value: err.Error()},
|
||||
},
|
||||
"failed to get role by uid")
|
||||
|
||||
return nil, e
|
||||
}
|
||||
|
||||
return &usecase.Role{
|
||||
ID: byUID.ID.Hex(),
|
||||
UID: byUID.UID,
|
||||
Name: byUID.Name,
|
||||
Status: byUID.Status,
|
||||
ClientID: byUID.ClientID,
|
||||
CreateAt: byUID.CreateAt,
|
||||
UpdateAt: byUID.UpdateAt,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (use *RoleUseCase) Create(ctx context.Context, role usecase.CreateRoleReq) error {
|
||||
err := use.roleRepository.Create(ctx, &entity.Role{
|
||||
UID: role.UID,
|
||||
Name: role.Name,
|
||||
Status: role.Status,
|
||||
ClientID: role.ClientID,
|
||||
})
|
||||
if err != nil {
|
||||
e := errs.DatabaseErrorWithScopeL(
|
||||
code.CloudEPPermission,
|
||||
domain.FailedToCreateRole,
|
||||
logx.WithContext(ctx),
|
||||
[]logx.LogField{
|
||||
{Key: "param", Value: role},
|
||||
{Key: "func", Value: "roleRepository.Create"},
|
||||
{Key: "err", Value: err.Error()},
|
||||
},
|
||||
"failed to create role")
|
||||
|
||||
return e
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (use *RoleUseCase) Update(ctx context.Context, id string, data usecase.CreateRoleReq) error {
|
||||
err := use.roleRepository.Update(ctx, repository.UpdateReq{
|
||||
ID: id,
|
||||
Name: &data.Name,
|
||||
UID: &data.UID,
|
||||
ClientID: &data.ClientID,
|
||||
Status: &data.Status,
|
||||
})
|
||||
if err != nil {
|
||||
e := errs.DatabaseErrorWithScopeL(
|
||||
code.CloudEPPermission,
|
||||
domain.FailedToUpdateRole,
|
||||
logx.WithContext(ctx),
|
||||
[]logx.LogField{
|
||||
{Key: "id", Value: id},
|
||||
{Key: "param", Value: data},
|
||||
{Key: "func", Value: "roleRepository.Update"},
|
||||
{Key: "err", Value: err.Error()},
|
||||
},
|
||||
"failed to update role")
|
||||
|
||||
return e
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (use *RoleUseCase) Delete(ctx context.Context, id string) error {
|
||||
err := use.roleRepository.Delete(ctx, id)
|
||||
if err != nil {
|
||||
e := errs.DatabaseErrorWithScopeL(
|
||||
code.CloudEPPermission,
|
||||
domain.FailedToDelRole,
|
||||
logx.WithContext(ctx),
|
||||
[]logx.LogField{
|
||||
{Key: "id", Value: id},
|
||||
{Key: "func", Value: "roleRepository.Delete"},
|
||||
{Key: "err", Value: err.Error()},
|
||||
},
|
||||
"failed to delete role")
|
||||
|
||||
return e
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
|
@ -0,0 +1,73 @@
|
|||
package usecase
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/permission"
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/usecase"
|
||||
)
|
||||
|
||||
type RolePermissionUseCaseParam struct {
|
||||
//rolePermissionRepository repository.RolePermissionRepository
|
||||
}
|
||||
|
||||
type RolePermissionUseCase struct {
|
||||
RolePermissionUseCaseParam
|
||||
}
|
||||
|
||||
func NewRolePermissionUseCase(param RolePermissionUseCaseParam) usecase.RolePermissionUseCase {
|
||||
return &RolePermissionUseCase{
|
||||
RolePermissionUseCaseParam: param,
|
||||
}
|
||||
}
|
||||
|
||||
func (use *RolePermissionUseCase) Get(ctx context.Context, roleID string) (permission.Permissions, error) {
|
||||
//rolePermissions, err := use.rolePermissionRepository.Get(ctx, roleID)
|
||||
//if err != nil && !errors.Is(err, repository.ErrRecordNotFound) {
|
||||
// return nil, usecase.InternalError{Err: fmt.Errorf("permissionRepo.Get error: %w", err)}
|
||||
//}
|
||||
//
|
||||
//permissions, err := uc.PermissionRepo.All(ctx)
|
||||
//if err != nil && !errors.Is(err, repository.ErrRecordNotFound) {
|
||||
// return nil, usecase.InternalError{Err: fmt.Errorf("permissionRepo.AllStatus error: %w", err)}
|
||||
//}
|
||||
//
|
||||
//// TODO cache http://jira.logintt.com:8080/browse/ESC-2046
|
||||
//return GeneratePermissionTree(permissions).getFullParentPermission(rolePermissions), nil
|
||||
//get, err := use.rolePermissionRepository.Get(ctx, roleID)
|
||||
//if err != nil {
|
||||
// return nil, err
|
||||
//}
|
||||
//
|
||||
//permissions := make(permission.Permissions, len(get))
|
||||
//for _, item := range get {
|
||||
// permissions[item.PermissionID] = item.
|
||||
//}
|
||||
//
|
||||
return permission.Permissions{}, nil
|
||||
}
|
||||
|
||||
func (use *RolePermissionUseCase) GetByRoleUID(ctx context.Context, uid string) (permission.Permissions, error) {
|
||||
//TODO implement me
|
||||
panic("implement me")
|
||||
}
|
||||
|
||||
func (use *RolePermissionUseCase) GetByUser(ctx context.Context, uid string) (usecase.UserPermission, error) {
|
||||
//TODO implement me
|
||||
panic("implement me")
|
||||
}
|
||||
|
||||
func (use *RolePermissionUseCase) Create(ctx context.Context, roleID string, permissions permission.Permissions) error {
|
||||
//TODO implement me
|
||||
panic("implement me")
|
||||
}
|
||||
|
||||
func (use *RolePermissionUseCase) Delete(ctx context.Context, roleID string, permissions permission.Permissions) error {
|
||||
//TODO implement me
|
||||
panic("implement me")
|
||||
}
|
||||
|
||||
func (use *RolePermissionUseCase) List(ctx context.Context, req usecase.ListQuery) (usecase.RoleResp, error) {
|
||||
//TODO implement me
|
||||
panic("implement me")
|
||||
}
|
|
@ -1,16 +1,17 @@
|
|||
package usecase
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/entity"
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/usecase"
|
||||
mock "code.30cm.net/digimon/app-cloudep-permission-server/pkg/mock/repository"
|
||||
"context"
|
||||
"fmt"
|
||||
"github.com/golang-jwt/jwt/v4"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"go.uber.org/mock/gomock"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
// TestTokenUseCase_CreateAccessToken_TableDriven 透過 table-driven 方式測試 CreateAccessToken
|
||||
|
|
|
@ -0,0 +1,132 @@
|
|||
package usecase
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain"
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/entity"
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/repository"
|
||||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/usecase"
|
||||
"code.30cm.net/digimon/library-go/errs"
|
||||
"code.30cm.net/digimon/library-go/errs/code"
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
type UserRoleUseCaseParam struct {
|
||||
userRoleRepository repository.UserRoleRepository
|
||||
}
|
||||
|
||||
type UserRoleUseCase struct {
|
||||
UserRoleUseCaseParam
|
||||
}
|
||||
|
||||
func NewUserRoleUseCase(param UserRoleUseCaseParam) usecase.UserRoleUseCase {
|
||||
return &UserRoleUseCase{
|
||||
UserRoleUseCaseParam: param,
|
||||
}
|
||||
}
|
||||
|
||||
func (use *UserRoleUseCase) Select(ctx context.Context, filter usecase.UserRoleFilter) ([]usecase.UserRole, error) {
|
||||
id, err := use.userRoleRepository.GetUsersByRoleID(ctx, filter.RoleID)
|
||||
if err != nil {
|
||||
e := errs.DatabaseErrorWithScopeL(
|
||||
code.CloudEPPermission,
|
||||
domain.FailedToGetUserRole,
|
||||
logx.WithContext(ctx),
|
||||
[]logx.LogField{
|
||||
{Key: "req", Value: filter},
|
||||
{Key: "func", Value: "userRoleRepository.GetUsersByRoleID"},
|
||||
{Key: "err", Value: err.Error()},
|
||||
},
|
||||
"failed to get users by role id")
|
||||
|
||||
return nil, e
|
||||
}
|
||||
|
||||
result := make([]usecase.UserRole, 0, len(id))
|
||||
for _, item := range result {
|
||||
result = append(result, usecase.UserRole{
|
||||
UID: item.UID,
|
||||
RoleID: filter.RoleID,
|
||||
CreateAt: item.CreateAt,
|
||||
UpdateAt: item.UpdateAt,
|
||||
})
|
||||
}
|
||||
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (use *UserRoleUseCase) Get(ctx context.Context, uid string) (usecase.UserRole, error) {
|
||||
id, err := use.userRoleRepository.GetByUserID(ctx, uid)
|
||||
if err != nil {
|
||||
e := errs.DatabaseErrorWithScopeL(
|
||||
code.CloudEPPermission,
|
||||
domain.FailedToGetUserRoleByUID,
|
||||
logx.WithContext(ctx),
|
||||
[]logx.LogField{
|
||||
{Key: "uid", Value: uid},
|
||||
{Key: "func", Value: "userRoleRepository.GetByUserID"},
|
||||
{Key: "err", Value: err.Error()},
|
||||
},
|
||||
"failed to get users by role id")
|
||||
|
||||
return usecase.UserRole{}, e
|
||||
}
|
||||
|
||||
return usecase.UserRole{
|
||||
UID: id.UID,
|
||||
RoleID: id.RoleID,
|
||||
CreateAt: id.CreateAt,
|
||||
UpdateAt: id.UpdateAt,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (use *UserRoleUseCase) Create(ctx context.Context, uid, roleID string) (usecase.UserRole, error) {
|
||||
ins := entity.UserRole{
|
||||
UID: uid,
|
||||
RoleID: roleID,
|
||||
}
|
||||
err := use.userRoleRepository.CreateUserRole(ctx, ins)
|
||||
if err != nil {
|
||||
e := errs.DatabaseErrorWithScopeL(
|
||||
code.CloudEPPermission,
|
||||
domain.FailedToCreateUserRole,
|
||||
logx.WithContext(ctx),
|
||||
[]logx.LogField{
|
||||
{Key: "uid-role", Value: fmt.Sprintf("%s-%s", uid, roleID)},
|
||||
{Key: "func", Value: "userRoleRepository.CreateUserRole"},
|
||||
{Key: "err", Value: err.Error()},
|
||||
},
|
||||
"failed to create user role")
|
||||
|
||||
return usecase.UserRole{}, e
|
||||
}
|
||||
|
||||
return usecase.UserRole{
|
||||
UID: ins.UID,
|
||||
RoleID: ins.RoleID,
|
||||
CreateAt: ins.CreateAt,
|
||||
UpdateAt: ins.UpdateAt,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (use *UserRoleUseCase) Update(ctx context.Context, uid, roleID string) error {
|
||||
_, err := use.userRoleRepository.UpdateUserRole(ctx, uid, roleID)
|
||||
if err != nil {
|
||||
e := errs.DatabaseErrorWithScopeL(
|
||||
code.CloudEPPermission,
|
||||
domain.FailedToUpdateUserRole,
|
||||
logx.WithContext(ctx),
|
||||
[]logx.LogField{
|
||||
{Key: "uid-role", Value: fmt.Sprintf("%s-%s", uid, roleID)},
|
||||
{Key: "func", Value: "userRoleRepository.UpdateUserRole"},
|
||||
{Key: "err", Value: err.Error()},
|
||||
},
|
||||
"failed to update user role")
|
||||
|
||||
return e
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
Loading…
Reference in New Issue