Introduces invite, verify, accept, resend, and revoke flows using team_members and invitation tokens, sends the branded invitation template, and requires account activation before team login. Co-authored-by: Cursor <cursoragent@cursor.com>
52 lines
2.8 KiB
Go
52 lines
2.8 KiB
Go
package ports
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"Yimaru-Backend/internal/domain"
|
|
)
|
|
|
|
type TeamStore interface {
|
|
CreateTeamMember(ctx context.Context, member domain.TeamMember) (domain.TeamMember, error)
|
|
GetTeamMemberByID(ctx context.Context, id int64) (domain.TeamMember, error)
|
|
GetTeamMemberByEmail(ctx context.Context, email string) (domain.TeamMember, error)
|
|
GetAllTeamMembers(
|
|
ctx context.Context,
|
|
teamRole, department, status *string,
|
|
limit, offset int32,
|
|
) ([]domain.TeamMember, int64, error)
|
|
SearchTeamMembers(
|
|
ctx context.Context,
|
|
search string,
|
|
teamRole, status *string,
|
|
) ([]domain.TeamMember, error)
|
|
UpdateTeamMember(ctx context.Context, req domain.UpdateTeamMemberReq) error
|
|
UpdateTeamMemberStatus(ctx context.Context, req domain.UpdateTeamMemberStatusReq) error
|
|
UpdateTeamMemberPassword(ctx context.Context, memberID int64, password string) error
|
|
UpdateTeamMemberLastLogin(ctx context.Context, memberID int64) error
|
|
DeleteTeamMember(ctx context.Context, memberID int64) error
|
|
CheckTeamMemberEmailExists(ctx context.Context, email string) (bool, error)
|
|
GetTeamMembersByDepartment(ctx context.Context, department string) ([]domain.TeamMember, error)
|
|
GetTeamMembersByRole(ctx context.Context, role string) ([]domain.TeamMember, error)
|
|
CountTeamMembersByStatus(ctx context.Context) (domain.TeamMemberStats, error)
|
|
UpdateTeamMemberEmailVerified(ctx context.Context, memberID int64, verified bool) error
|
|
|
|
RevokeAllActiveTeamRefreshTokensForMember(ctx context.Context, memberID int64) error
|
|
CreateTeamRefreshToken(ctx context.Context, memberID int64, token string, expiresAt, createdAt time.Time) error
|
|
GetTeamRefreshTokenByToken(ctx context.Context, token string) (domain.TeamRefreshToken, error)
|
|
RevokeTeamRefreshTokenByToken(ctx context.Context, token string) error
|
|
BulkDeactivateTeamMembersByRole(ctx context.Context, teamRole string, excludeTeamMemberID *int64) (int64, error)
|
|
BulkReactivateTeamMembersByRole(ctx context.Context, teamRole string, excludeTeamMemberID *int64) (int64, error)
|
|
|
|
CreateTeamInvitation(ctx context.Context, invitation domain.TeamInvitation) (domain.TeamInvitation, error)
|
|
GetTeamInvitationByToken(ctx context.Context, token string) (domain.TeamInvitation, error)
|
|
GetTeamInvitationByID(ctx context.Context, id int64) (domain.TeamInvitation, error)
|
|
GetPendingTeamInvitationByMemberID(ctx context.Context, memberID int64) (domain.TeamInvitation, error)
|
|
RevokePendingTeamInvitationsForMember(ctx context.Context, memberID int64) error
|
|
AcceptTeamInvitation(ctx context.Context, invitationID int64) (domain.TeamInvitation, error)
|
|
RevokeTeamInvitation(ctx context.Context, invitationID int64) (domain.TeamInvitation, error)
|
|
ExpireTeamInvitation(ctx context.Context, invitationID int64) error
|
|
ListTeamInvitations(ctx context.Context, status *string, limit, offset int32) ([]domain.TeamInvitationWithMember, int64, error)
|
|
}
|