Skip to content
Snippets Groups Projects
Select Git revision
  • 05fefe4a2d9582e48131c82cee4d25cef2db40f5
  • main default protected
  • pdf-annotieren
  • pdf-annotieren-2.0
  • issue-4244
  • issues-4244-b
  • pdf-annotieren-old
  • biest-4274
  • issue-2982
  • issue-660
  • issue-3326
  • issue-3270
  • issue-3616
  • 5.1
  • 5.2
  • 5.3
  • 5.4
  • 5.5
  • issue-4255
  • issue-4261
  • issue-4262
  • v5.4.2
  • v5.3.5
  • v5.2.7
  • v5.1.8
  • v5.4.1
  • v5.3.4
  • v5.2.6
  • v5.1.7
  • v5.0.9
  • v5.4
  • v5.3.3
  • v5.2.5
  • v5.1.6
  • v5.0.8
  • v5.3.2
  • v5.2.4
  • v5.1.5
  • v5.0.7
  • v5.3.1
  • v5.2.3
41 results

Authentication.php

Blame
  • Forked from Stud.IP / Stud.IP
    Source project has a limited visibility.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    CourseMember.php 2.21 KiB
    <?php
    
    namespace JsonApi\Schemas;
    
    use JsonApi\Routes\Courses\Authority as CourseAuthority;
    use JsonApi\Routes\CourseMemberships\Authority as MembershipAuthority;
    use Neomerx\JsonApi\Contracts\Schema\ContextInterface;
    use Neomerx\JsonApi\Schema\Link;
    
    class CourseMember extends SchemaProvider
    {
        const TYPE = 'course-memberships';
        const REL_COURSE = 'course';
        const REL_USER = 'user';
    
        public function getId($membership): ?string
        {
            return $membership->id;
        }
    
        public function getAttributes($membership, ContextInterface $context): iterable
        {
            $attributes = [
                'permission' => $membership->status,
                'position' => (int) $membership->position,
                'group' => (int) $membership->gruppe,
                'mkdate' => date('c', $membership->mkdate),
                'label' => $membership->label,
            ];
    
            if ($this->currentUser) {
                if (MembershipAuthority::canIndexMembershipsOfUser($this->currentUser, $membership->user)) {
                    # TODO: $attributes['notification'] = (int) $membership->notification;
                    $attributes['visible'] = $membership->visible;
                }
                if (CourseAuthority::canEditCourse($this->currentUser, $membership->course)) {
                    $attributes['comment'] = $membership->comment;
                    $attributes['visible'] = $membership->visible;
                }
            }
    
            return $attributes;
        }
    
        public function getRelationships($membership, ContextInterface $context): iterable
        {
            $isPrimary = $context->getPosition()->getLevel() === 0;
    
            $relationships = [];
    
            if ($isPrimary) {
                $relationships[self::REL_COURSE] = [
                    self::RELATIONSHIP_LINKS => [
                        Link::RELATED => $this->createLinkToResource($membership->course)
                    ],
                    self::RELATIONSHIP_DATA => $membership->course,
                ];
    
                $relationships[self::REL_USER] = [
                    self::RELATIONSHIP_LINKS => [
                        Link::RELATED => $this->createLinkToResource($membership->user)
                    ],
                    self::RELATIONSHIP_DATA => $membership->user,
                ];
            }
    
            return $relationships;
        }
    }