mirror of
https://github.com/h44z/wg-portal.git
synced 2025-04-19 08:55:12 +00:00
84 lines
2.7 KiB
Go
84 lines
2.7 KiB
Go
package backend
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/h44z/wg-portal/internal/config"
|
|
"github.com/h44z/wg-portal/internal/domain"
|
|
)
|
|
|
|
// region dependencies
|
|
|
|
type UserServiceUserManager interface {
|
|
GetUser(ctx context.Context, id domain.UserIdentifier) (*domain.User, error)
|
|
GetAllUsers(ctx context.Context) ([]domain.User, error)
|
|
CreateUser(ctx context.Context, user *domain.User) (*domain.User, error)
|
|
UpdateUser(ctx context.Context, user *domain.User) (*domain.User, error)
|
|
DeleteUser(ctx context.Context, id domain.UserIdentifier) error
|
|
ActivateApi(ctx context.Context, id domain.UserIdentifier) (*domain.User, error)
|
|
DeactivateApi(ctx context.Context, id domain.UserIdentifier) (*domain.User, error)
|
|
}
|
|
|
|
type UserServiceWireGuardManager interface {
|
|
GetUserPeers(ctx context.Context, id domain.UserIdentifier) ([]domain.Peer, error)
|
|
GetUserInterfaces(ctx context.Context, _ domain.UserIdentifier) ([]domain.Interface, error)
|
|
GetUserPeerStats(ctx context.Context, id domain.UserIdentifier) ([]domain.PeerStatus, error)
|
|
}
|
|
|
|
// endregion dependencies
|
|
|
|
type UserService struct {
|
|
cfg *config.Config
|
|
|
|
users UserServiceUserManager
|
|
wg UserServiceWireGuardManager
|
|
}
|
|
|
|
func NewUserService(cfg *config.Config, users UserServiceUserManager, wg UserServiceWireGuardManager) *UserService {
|
|
return &UserService{
|
|
cfg: cfg,
|
|
users: users,
|
|
wg: wg,
|
|
}
|
|
}
|
|
|
|
func (u UserService) GetUser(ctx context.Context, id domain.UserIdentifier) (*domain.User, error) {
|
|
return u.users.GetUser(ctx, id)
|
|
}
|
|
|
|
func (u UserService) GetAllUsers(ctx context.Context) ([]domain.User, error) {
|
|
return u.users.GetAllUsers(ctx)
|
|
}
|
|
|
|
func (u UserService) UpdateUser(ctx context.Context, user *domain.User) (*domain.User, error) {
|
|
return u.users.UpdateUser(ctx, user)
|
|
}
|
|
|
|
func (u UserService) CreateUser(ctx context.Context, user *domain.User) (*domain.User, error) {
|
|
return u.users.CreateUser(ctx, user)
|
|
}
|
|
|
|
func (u UserService) DeleteUser(ctx context.Context, id domain.UserIdentifier) error {
|
|
return u.users.DeleteUser(ctx, id)
|
|
}
|
|
|
|
func (u UserService) ActivateApi(ctx context.Context, id domain.UserIdentifier) (*domain.User, error) {
|
|
return u.users.ActivateApi(ctx, id)
|
|
}
|
|
|
|
func (u UserService) DeactivateApi(ctx context.Context, id domain.UserIdentifier) (*domain.User, error) {
|
|
return u.users.DeactivateApi(ctx, id)
|
|
}
|
|
|
|
func (u UserService) GetUserPeers(ctx context.Context, id domain.UserIdentifier) ([]domain.Peer, error) {
|
|
return u.wg.GetUserPeers(ctx, id)
|
|
}
|
|
|
|
func (u UserService) GetUserPeerStats(ctx context.Context, id domain.UserIdentifier) ([]domain.PeerStatus, error) {
|
|
return u.wg.GetUserPeerStats(ctx, id)
|
|
}
|
|
|
|
func (u UserService) GetUserInterfaces(ctx context.Context, id domain.UserIdentifier) ([]domain.Interface, error) {
|
|
return u.wg.GetUserInterfaces(ctx, id)
|
|
}
|