mirror of
https://github.com/1Panel-dev/1Panel.git
synced 2026-09-23 08:00:55 +00:00
46 lines
1.8 KiB
Go
46 lines
1.8 KiB
Go
package auth
|
|
|
|
import (
|
|
"github.com/1Panel-dev/1Panel/core/app/dto"
|
|
"github.com/1Panel-dev/1Panel/core/app/repo"
|
|
"github.com/1Panel-dev/1Panel/core/buserr"
|
|
"github.com/1Panel-dev/1Panel/core/init/session/psession"
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
type PanelAPIKeyOwnerProvider struct{}
|
|
|
|
func (p PanelAPIKeyOwnerProvider) CurrentAPIKeyOwner(c *gin.Context) (APIKeyOwner, error) {
|
|
value, ok := c.Get(psession.GinContextSessionUserKey)
|
|
u, valid := value.(psession.SessionUser)
|
|
if !ok || !valid || u.ID != psession.SuperAdminSessionUserID {
|
|
return APIKeyOwner{}, buserr.New("ErrNotLogin")
|
|
}
|
|
return p.ResolveAPIKeyOwner(c, APIKeyOwnerPanelAdmin, u.ID)
|
|
}
|
|
|
|
func (PanelAPIKeyOwnerProvider) ResolveAPIKeyOwner(_ *gin.Context, ownerType, ownerID string) (APIKeyOwner, error) {
|
|
if ownerType != APIKeyOwnerPanelAdmin || ownerID != psession.SuperAdminSessionUserID {
|
|
return APIKeyOwner{}, buserr.New("ErrApiConfigStatusInvalid")
|
|
}
|
|
name, err := repo.NewISettingRepo().GetValueByKey("UserName")
|
|
if err != nil || name == "" {
|
|
return APIKeyOwner{}, buserr.New("ErrApiConfigStatusInvalid")
|
|
}
|
|
return APIKeyOwner{Type: ownerType, ID: ownerID, Name: name, IsSuperAdmin: true}, nil
|
|
}
|
|
|
|
func (p PanelAPIKeyOwnerProvider) LoadLegacyAPIKey(owner APIKeyOwner) (APIAuthConfig, error) {
|
|
if _, err := p.ResolveAPIKeyOwner(nil, owner.Type, owner.ID); err != nil {
|
|
return APIAuthConfig{}, err
|
|
}
|
|
return LoadAPIAuthConfig(nil)
|
|
}
|
|
|
|
func (p PanelAPIKeyOwnerProvider) SaveLegacyAPIKey(owner APIKeyOwner, config APIAuthConfig) error {
|
|
if _, err := p.ResolveAPIKeyOwner(nil, owner.Type, owner.ID); err != nil {
|
|
return err
|
|
}
|
|
return StoreLegacyAPIConfig(dto.ApiInterfaceConfig{ApiInterfaceStatus: config.ApiInterfaceStatus, ApiKey: config.ApiKey, IpWhiteList: config.IpWhiteList, ApiTrustedProxies: config.ApiTrustedProxies, ApiKeyValidityTime: config.ApiKeyValidityTime})
|
|
}
|