Documentation
¶
Overview ¶
Package controller provides HTTP handlers for the Locky API.
This package contains controllers for handling HTTP requests across different access levels:
- Public controllers: No authentication required
- Internal controllers: Authentication required, standard operations
- Private controllers: Admin authentication required
Index ¶
- type CommonControllerForInternal
- type CommonControllerForPrivate
- type CommonControllerForPublic
- type GroupControllerForInternal
- type GroupControllerForPrivate
- type MemberControllerForInternal
- type MemberControllerForPrivate
- type RoleControllerForInternal
- type RoleControllerForPrivate
- type UserControllerForInternal
- type UserControllerForPrivate
- type UserControllerForPublic
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CommonControllerForInternal ¶
type CommonControllerForInternal interface {
}
func NewCommonControllerForInternal ¶
func NewCommonControllerForInternal(commonRepository repository.CommonRepository) CommonControllerForInternal
type CommonControllerForPrivate ¶
type CommonControllerForPrivate interface {
}
func NewCommonControllerForPrivate ¶
func NewCommonControllerForPrivate(commonRepository repository.CommonRepository) CommonControllerForPrivate
type CommonControllerForPublic ¶
type CommonControllerForPublic interface {
ValidateToken(c *gin.Context)
GetUserInfo(c *gin.Context)
Login(c *gin.Context)
RefreshToken(c *gin.Context)
Logout(c *gin.Context)
}
CommonControllerForPublic provides public authentication endpoints.
This interface handles authentication operations that don't require prior authentication, following OpenStack Keystone design patterns.
Available endpoints:
- ValidateToken: Validates JWT tokens and returns user information
- GetUserInfo: Returns user information from authenticated context
- Login: Handles user login and JWT token issuance
- RefreshToken: Refreshes JWT tokens using refresh tokens
- Logout: Handles user logout (token invalidation)
func NewCommonControllerForPublic ¶
func NewCommonControllerForPublic(userRepository repository.UserRepository, commonRepository repository.CommonRepository) CommonControllerForPublic
NewCommonControllerForPublic creates a new instance of CommonControllerForPublic.
This constructor function initializes a new CommonControllerForPublic with the required repository dependencies for handling authentication operations.
Parameters:
- userRepository: Repository for user data operations
- commonRepository: Repository for common operations including JWT token management
Returns:
- CommonControllerForPublic: Configured controller instance ready for use
type GroupControllerForInternal ¶
type GroupControllerForInternal interface {
GetGroups(c *gin.Context)
CreateGroup(c *gin.Context)
UpdateGroup(c *gin.Context)
DeleteGroup(c *gin.Context)
CountGroups(c *gin.Context)
}
GroupControllerForInternal provides authenticated group operations for internal scope.
Exposes CRUD endpoints requiring a valid bearer token:
- GetGroups: List groups (GET /v1/internal/groups)
- CreateGroup: Create group (POST /v1/internal/groups)
- UpdateGroup: Update group (PUT /v1/internal/groups/{id})
- DeleteGroup: Delete group (DELETE /v1/internal/groups/{id})
func NewGroupControllerForInternal ¶
func NewGroupControllerForInternal(groupRepository repository.GroupRepository, commonRepository repository.CommonRepository) GroupControllerForInternal
NewGroupControllerForInternal creates a new internal group controller.
Parameters:
- groupRepository: Group data repository
- commonRepository: Common services repository
Returns:
- GroupControllerForInternal: Configured internal controller instance
type GroupControllerForPrivate ¶
type GroupControllerForPrivate interface {
GetGroups(c *gin.Context)
CreateGroup(c *gin.Context)
UpdateGroup(c *gin.Context)
DeleteGroup(c *gin.Context)
CountGroups(c *gin.Context)
}
func NewGroupControllerForPrivate ¶
func NewGroupControllerForPrivate(groupRepository repository.GroupRepository, commonRepository repository.CommonRepository) GroupControllerForPrivate
type MemberControllerForInternal ¶
type MemberControllerForInternal interface {
GetMembers(c *gin.Context)
CreateMember(c *gin.Context)
UpdateMember(c *gin.Context)
DeleteMember(c *gin.Context)
CountMembers(c *gin.Context)
}
MemberControllerForInternal provides authenticated member operations for internal scope.
Exposes CRUD endpoints requiring a valid bearer token:
- GetMembers: List members (GET /v1/internal/members)
- CreateMember: Create member (POST /v1/internal/members)
- UpdateMember: Update member (PUT /v1/internal/members/{id})
- DeleteMember: Delete member (DELETE /v1/internal/members/{id})
func NewMemberControllerForInternal ¶
func NewMemberControllerForInternal(memberRepository repository.MemberRepository, commonRepository repository.CommonRepository) MemberControllerForInternal
NewMemberControllerForInternal creates a new internal member controller.
Parameters:
- memberRepository: Member data repository
- commonRepository: Common services repository
Returns:
- MemberControllerForInternal: Configured internal controller instance
type MemberControllerForPrivate ¶
type MemberControllerForPrivate interface {
GetMembers(c *gin.Context)
CreateMember(c *gin.Context)
UpdateMember(c *gin.Context)
DeleteMember(c *gin.Context)
CountMembers(c *gin.Context)
}
func NewMemberControllerForPrivate ¶
func NewMemberControllerForPrivate(memberRepository repository.MemberRepository, commonRepository repository.CommonRepository) MemberControllerForPrivate
type RoleControllerForInternal ¶
RoleControllerForInternal: internal (read-only) role operations ListRoles also returns single details when specified with ?id= GetRole is deprecated as it's integrated into query-based approach
func NewRoleControllerForInternal ¶
func NewRoleControllerForInternal(repo repository.RoleRepository, enf *casbin.Enforcer) RoleControllerForInternal
type RoleControllerForPrivate ¶
type RoleControllerForPrivate interface {
ListRoles(c *gin.Context)
CreateRole(c *gin.Context)
UpdateRole(c *gin.Context)
DeleteRole(c *gin.Context)
}
RoleControllerForPrivate: administrative full CRUD (single retrieval via GET /roles?id=xxx)
func NewRoleControllerForPrivate ¶
func NewRoleControllerForPrivate(repo repository.RoleRepository, enf *casbin.Enforcer) RoleControllerForPrivate
type UserControllerForInternal ¶
type UserControllerForInternal interface {
GetUsers(c *gin.Context)
UpdateUser(c *gin.Context)
DeleteUser(c *gin.Context)
CreateUser(c *gin.Context)
CountUsers(c *gin.Context) // Added: count
}
UserControllerForInternal provides authenticated (non-admin) user operations.
This interface exposes standard user operations requiring authentication:
- GetUsers: List users
- UpdateUser: Update user
- DeleteUser: Delete user
- CreateUser: Create user
func NewUserControllerForInternal ¶
func NewUserControllerForInternal(userRepository repository.UserRepository, commonRepository repository.CommonRepository) UserControllerForInternal
NewUserControllerForInternal creates a new internal user controller.
Parameters:
- userRepository: User data repository
- commonRepository: Common services repository (e.g., auth)
Returns:
- UserControllerForInternal: Configured internal controller instance
type UserControllerForPrivate ¶
type UserControllerForPrivate interface {
GetUsers(c *gin.Context)
CreateUser(c *gin.Context)
UpdateUser(c *gin.Context)
DeleteUser(c *gin.Context)
CountUsers(c *gin.Context)
}
UserControllerForPrivate provides admin-only user management endpoints.
This interface exposes administrative operations that require private (admin) permissions:
- GetUsers: List all users
- CreateUser: Create a user
- UpdateUser: Update a user
- DeleteUser: Delete a user
func NewUserControllerForPrivate ¶
func NewUserControllerForPrivate(userRepository repository.UserRepository, commonRepository repository.CommonRepository) UserControllerForPrivate
NewUserControllerForPrivate creates a new private (admin) user controller.
Parameters:
- userRepository: User data repository
- commonRepository: Common services repository (e.g., auth)
Returns:
- UserControllerForPrivate: Configured private controller instance
type UserControllerForPublic ¶
UserControllerForPublic provides public user management endpoints.
This interface handles user operations that don't require prior authentication, primarily user registration functionality.
Available endpoints:
- CreateUser: Handles new user registration
- GetUsers: Retrieves user list (public access)
func NewUserControllerForPublic ¶
func NewUserControllerForPublic(userRepository repository.UserRepository, commonRepository repository.CommonRepository) UserControllerForPublic