package auth import ( "context" ) type Manager interface { RegisterUser(ctx context.Context, request RegisterUserRequest) (*RegisterUserResponse, error) LoginUser(ctx context.Context, request LoginUserRequest) (*LoginUserResponse, error) LogoutUser(ctx context.Context, request LogoutUserRequest) error GetNewAccessToken(ctx context.Context, request GetNewAccessTokenRequest) (*GetNewAccessTokenResponse, error) GetUserEmailVerificationToken(ctx context.Context, uid string) (*GetUserTokenResponse, error) CheckTokenIsValid(ctx context.Context, token string) (bool, error) GetPermissionsByUsersId(ctx context.Context, id string) (*GetPermissionsByUsersIdResponse, error) CheckPermissions(ctx context.Context, required CheckPermissionsRequest) (bool, error) GetUserInfo(ctx context.Context, id string) (*UserInfo, error) VerifyEmail(ctx context.Context, userID string, token string) error GetEmailVerificationStatus(ctx context.Context, userID string) (*GetEmailVerificationResponse, error) ResetPassword(ctx context.Context, request ResetPasswordRequest) error } type Config struct { AuthServerAddr string Realm string ClientId string ClientSecret string }