openreplay/ee/backend/pkg/spot/auth/authorizer.go

25 lines
582 B
Go

package auth
import "fmt"
func (a *authImpl) IsAuthorized(authHeader string, permissions []string, isExtension bool) (*User, error) {
secret := a.secret
if isExtension {
secret = a.spotSecret
}
jwtInfo, err := parseJWT(authHeader, secret)
if err != nil {
return nil, err
}
user, err := authUser(a.pgconn, jwtInfo.UserId, jwtInfo.TenantID, int(jwtInfo.IssuedAt.Unix()), isExtension)
if err != nil {
return nil, err
}
for _, perm := range permissions {
if !user.HasPermission(perm) {
return nil, fmt.Errorf("user has no permission")
}
}
return user, nil
}