Files
Dušan Borovčanin 168e8b90cb
Property Based Tests / api-test (push) Has been cancelled
Continuous Delivery / lint-and-build (push) Has been cancelled
Deploy GitHub Pages / swagger-ui (push) Has been cancelled
CI Pipeline / Lint Proto (push) Has been cancelled
CI Pipeline / Detect Changes (push) Has been cancelled
Continuous Delivery / Build and Push Docker Images (push) Has been cancelled
CI Pipeline / lint-and-build (push) Has been cancelled
CI Pipeline / Test ${{ matrix.module }} (push) Has been cancelled
CI Pipeline / Upload Coverage (push) Has been cancelled
NOISSUE - Move rules engine, alarms, reports, journal and notifications to EE (#3552)
Signed-off-by: dusan <borovcanindusan1@gmail.com>
2026-07-30 17:55:57 +02:00

38 lines
975 B
Go

// Copyright (c) Abstract Machines
// SPDX-License-Identifier: Apache-2.0
package atom
import (
"context"
atomcore "github.com/absmach/magistrala/pkg/atom"
"github.com/absmach/magistrala/pkg/authn"
"github.com/absmach/magistrala/pkg/errors"
svcerr "github.com/absmach/magistrala/pkg/errors/service"
)
type authentication struct {
verifier *atomcore.TokenVerifier
}
var _ authn.Authentication = (*authentication)(nil)
func NewAuthentication() authn.Authentication {
return authentication{verifier: atomcore.NewTokenVerifier(atomcore.LoadConfig())}
}
func (a authentication) Authenticate(ctx context.Context, token string) (authn.Session, error) {
claims, err := a.verifier.VerifyTokenClaims(ctx, token)
if err != nil {
return authn.Session{}, errors.Wrap(svcerr.ErrAuthentication, err)
}
return authn.Session{
Type: authn.AccessToken,
UserID: claims.SubjectID,
DomainID: claims.TenantID,
Role: authn.UserRole,
Verified: true,
}, nil
}