@DomainNode(searchQueryName = "searchGropiusUsers")
@Authorization(name = "CAN_CREATE_COMPONENTS", allow = [Rule(beanRef = "relatedToGlobalPermission")])
@Authorization(name = "CAN_CREATE_PROJECTS", allow = [Rule(beanRef = "relatedToGlobalPermission")])
@Authorization(name = "CAN_CREATE_IMSS", allow = [Rule(beanRef = "relatedToGlobalPermission")])
@Authorization(name = "CAN_CREATE_TEMPLATES", allow = [Rule(beanRef = "relatedToGlobalPermission")])
@AdditionalFilter(beanName = "nodePermissionFilter")
class GropiusUser(displayName: String, email: String?, avatar: URI?, username: String, var isAdmin: Boolean) : User

A user of the Gropius System. The username can be used as unique identifier for GropiusUsers. IMSUsers can be linked to a GropiusUser. Note however that this link does not affect relationships, e.g. if an IMSUser is part of an Assignment, after the IMSUser was linked to a GropiusUser, the GropiusUser does not link directly to the Assignment. Therefore, to collect all Assignments, Issue participations etc. it is necessary to also request all linked IMSUsers and their Assignments etc.

Constructors

Link copied to clipboard
constructor(displayName: String, email: String?, avatar: URI?, username: String, isAdmin: Boolean)

Types

Link copied to clipboard
object Companion

Properties

Link copied to clipboard
@NodeRelationship(type = "USER", direction = Direction.INCOMING)
@FilterProperty
val assignments: LazyLoadingDelegate<Assignment, NodeSetPropertyDelegate.NodeSetProperty>

Assignments the user is part of, this includes assignments which aren't active.

Link copied to clipboard
var avatar: URI?
Link copied to clipboard
@NodeRelationship(type = "CAN_SYNC_OTHERS", direction = Direction.OUTGOING)
@FilterProperty
val canSyncOthers: LazyLoadingDelegate<SyncPermissionTarget, NodeSetPropertyDelegate.NodeSetProperty>

The IMSSyncPermissionTarget this users allow to sync content of other users.

Link copied to clipboard
@NodeRelationship(type = "CAN_SYNC_SELF", direction = Direction.OUTGOING)
@FilterProperty
val canSyncSelf: LazyLoadingDelegate<SyncPermissionTarget, NodeSetPropertyDelegate.NodeSetProperty>

The UserSyncPermissionTarget this users allow to sync content of this user.

Link copied to clipboard
@NodeRelationship(type = "CREATED_BY", direction = Direction.INCOMING)
@FilterProperty
val createdNodes: LazyLoadingDelegate<AuditedNode, NodeSetPropertyDelegate.NodeSetProperty>

AuditedNodes the user created.

Link copied to clipboard
@FilterProperty
@OrderProperty
@SearchProperty
var displayName: String

The name which should be displayed for the user.

Link copied to clipboard
@FilterProperty
@OrderProperty
var email: String?

The email address of the user.

Link copied to clipboard
internal var fieldCache: MutableMap<String, Any?>
Link copied to clipboard
val graphQLId: ID

The unique id of this node

Link copied to clipboard
@Id
@GeneratedValue(generatorRef = "nodeIdGenerator")
internal var id: String?
Link copied to clipboard
@NodeRelationship(type = "GROPIUS_USER", direction = Direction.INCOMING)
@FilterProperty
val imsUsers: LazyLoadingDelegate<IMSUser, NodeSetPropertyDelegate.NodeSetProperty>

The IMSUsers linked to this GropiusUser.

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
internal var isSaved: Boolean
Link copied to clipboard
@ConvertWith(converter = LazyLoadingContextConverter::class)
internal var lazyLoadingContext: LazyLoadingContext?
Link copied to clipboard
@Version
private var nodeVersion: Long

Version used for optimistic locking

Link copied to clipboard
internal var orderFields: MutableMap<String, Any?>?
Link copied to clipboard
@NodeRelationship(type = "PARTICIPANT", direction = Direction.INCOMING)
@FilterProperty
val participatedIssues: LazyLoadingDelegate<Issue, NodeSetPropertyDelegate.NodeSetProperty>

Issues the user participated in.

Link copied to clipboard
@NodeRelationship(type = "PERMISSION", direction = Direction.OUTGOING)
@FilterProperty
val permissions: LazyLoadingDelegate<BasePermission, NodeSetPropertyDelegate.NodeSetProperty>

Permissions the user has.

Link copied to clipboard
internal val propertyLookup: MutableMap<String, PropertyDelegate<*>>
Link copied to clipboard
Link copied to clipboard
@FilterProperty
@OrderProperty
@SearchProperty
var username: String?

Functions

Link copied to clipboard
fun avatar(@Autowired avatarGenerationService: AvatarGenerationService): URI

The avatar of the user.

Link copied to clipboard
operator override fun equals(other: Any?): Boolean
Link copied to clipboard
internal suspend fun getFromGraphQL(@Autowired nodeQueryParser: NodeQueryParser, dataFetchingEnvironment: DataFetchingEnvironment): Any?
Link copied to clipboard
internal fun <T : PropertyDelegate<*>> getProperty(property: KProperty1<*, *>): T
Link copied to clipboard
override fun hashCode(): Int
Link copied to clipboard
internal suspend fun <T : Node?> loadNodesOfRelationship(property: KProperty1<*, *>, loader: LazyLoadingSubqueryGenerator<T>.() -> Unit?)
Link copied to clipboard
protected fun <T : Node?> NodeProperty(): PropertyDelegateProvider<Node, NodePropertyDelegate<T>>
Link copied to clipboard
protected fun <T : Node> NodeSetProperty(): PropertyDelegateProvider<Node, NodeSetPropertyDelegate<T>>
Link copied to clipboard
internal fun registerQueryResult(entry: NodeQueryEntry<*>, queryResult: Any?)
Link copied to clipboard
open override fun toString(): String
Link copied to clipboard
open override fun username(): String

A unique identifier for the GropiusUser. Note that this might not be unique across all Users.