<?php/* * This file is part of Sulu. * * (c) Sulu GmbH * * This source file is subject to the MIT license that is bundled * with this source code in the file LICENSE. */namespace Sulu\Bundle\SecurityBundle\Entity;use JMS\Serializer\Annotation\ExclusionPolicy;use JMS\Serializer\Annotation\Expose;use JMS\Serializer\Annotation\SerializedName;use JMS\Serializer\Annotation\VirtualProperty;use Sulu\Bundle\CoreBundle\Entity\ApiEntity;use Sulu\Bundle\SecurityBundle\Exception\AssignAnonymousRoleException;use Sulu\Component\Security\Authentication\RoleInterface;use Sulu\Component\Security\Authentication\UserInterface;/** * UserRole. * * @ExclusionPolicy("all"); */class UserRole extends ApiEntity{    /**     * @var int     *     * @Expose     */    protected $id;    /**     * @var string     *     * @Expose     */    protected $locale;    /**     * @var UserInterface     */    protected $user;    /**     * @var RoleInterface     *     * @Expose     */    protected $role;    /**     * Get id.     *     * @return int     */    public function getId()    {        return $this->id;    }    /**     * Set locale.     *     * @param string $locale     *     * @return UserRole     */    public function setLocale($locale)    {        $this->locale = $locale;        return $this;    }    /**     * Get locale.     *     * @return string     */    public function getLocale()    {        return $this->locale;    }    /**     * Get Locales as array.     *     * @return array     *     * @VirtualProperty     * @SerializedName("locales")     */    public function getLocales()    {        return \json_decode($this->locale);    }    /**     * Set user.     *     * @return UserRole     */    public function setUser(UserInterface $user)    {        $this->user = $user;        return $this;    }    /**     * Get user.     *     * @return UserInterface     */    public function getUser()    {        return $this->user;    }    /**     * Set role.     *     * @return UserRole     */    public function setRole(RoleInterface $role)    {        if ($role->getAnonymous()) {            throw new AssignAnonymousRoleException($role);        }        $this->role = $role;        return $this;    }    /**     * Get role.     *     * @return RoleInterface     */    public function getRole()    {        return $this->role;    }}