(ctx context.Context, eid, userID int64, role int64, keyID int64, libraryID *int64, enabled bool)
| 121 | } |
| 122 | |
| 123 | func (s *APIKeyService) SetAPIKeyStatus(ctx context.Context, eid, userID int64, role int64, keyID int64, libraryID *int64, enabled bool) error { |
| 124 | apiKey, err := model.GetAPIKeyByID(keyID) |
| 125 | if err != nil { |
| 126 | return err |
| 127 | } |
| 128 | if apiKey == nil { |
| 129 | return errors.New("API密钥不存在") |
| 130 | } |
| 131 | |
| 132 | if libraryID != nil { |
| 133 | if apiKey.LibraryID == nil { |
| 134 | return errors.New("该API密钥未关联任何知识库,无法通过知识库路径访问") |
| 135 | } |
| 136 | if *apiKey.LibraryID != *libraryID { |
| 137 | return errors.New("路径中的知识库ID与API密钥关联的知识库ID不匹配") |
| 138 | } |
| 139 | } |
| 140 | |
| 141 | if err := s.ensureAPIKeyManagePermission(eid, userID, role, apiKey); err != nil { |
| 142 | return err |
| 143 | } |
| 144 | |
| 145 | if enabled { |
| 146 | return model.EnableAPIKey(keyID) |
| 147 | } |
| 148 | return model.DisableAPIKey(keyID) |
| 149 | } |
| 150 | |
| 151 | func (s *APIKeyService) resolveAPIKeyScope(eid, userID int64, role int64, libraryID *int64) (*int64, error) { |
| 152 | if libraryID == nil { |
no test coverage detected