37 lines
1004 B
Go
37 lines
1004 B
Go
package domain
|
|
|
|
type Role string
|
|
|
|
const (
|
|
RoleSuperAdmin Role = "SUPER_ADMIN"
|
|
RoleAdmin Role = "ADMIN"
|
|
RoleStudent Role = "STUDENT"
|
|
// RoleOpenLearner can consume LMS content like a learner but without sequential prerequisite locking (step-by-step gates).
|
|
RoleOpenLearner Role = "OPEN_LEARNER"
|
|
RoleInstructor Role = "INSTRUCTOR"
|
|
RoleSupport Role = "SUPPORT"
|
|
)
|
|
|
|
func (r Role) IsValid() bool {
|
|
switch r {
|
|
case RoleSuperAdmin, RoleAdmin, RoleStudent, RoleOpenLearner, RoleInstructor, RoleSupport:
|
|
return true
|
|
default:
|
|
return false
|
|
}
|
|
}
|
|
|
|
// UsesLMSSequentialGating is true when LMS APIs apply sequential prerequisite locks (403 when blocked).
|
|
func (r Role) UsesLMSSequentialGating() bool {
|
|
return r == RoleStudent
|
|
}
|
|
|
|
// IsCustomerLearnerRole is true for platform roles that sign in as customers and consume learner-facing LMS APIs.
|
|
func (r Role) IsCustomerLearnerRole() bool {
|
|
return r == RoleStudent || r == RoleOpenLearner
|
|
}
|
|
|
|
func (r Role) Value() string {
|
|
return string(r)
|
|
}
|