o
    V
ha                     @   s  d dl mZmZmZmZmZ d dlmZ d dlm	Z	 d dl
mZmZmZmZ d dlmZmZmZmZmZ d dlmZ e Zejdedgd	ee	jeefd
ede	jfddZejdedgd	ejdedgd	d ddee	jeedfdededee de	jdef
ddZejdedgd	ee	jeefdede	jfddZ ej!dedgd	ee	jeefdedede	jfddZ"ej#dedgd	ee	jeefdede	jfddZ$dS )     )	APIRouterDependsRequestHTTPExceptionstatus)Optional)database)Role
RoleCreate
RoleUpdateRoleListResponse)create_role_servicelist_roles_serviceget_role_serviceupdate_role_servicedelete_role_service)get_current_userdetails/Roles)response_modeltagsroledbc                    sv   | d}| d}d| _d| _|dkr%| jd d|fvr$ttjddn|d	kr-|| _nttjd
dt| |}|S )Nroles
account_idFT    z!Super admin roles must be global.status_codedetail   z+You do not have permission to create roles.)getis_system_defaultis_global_accessr   r   r   HTTP_403_FORBIDDENr   )r   r   current_user	user_roleuser_accountcreated_role r)   5/var/www/html/moveengine/app/v1/routers/saas/roles.pycreate_role   s(   


r+   /d
   Nskiplimitsearchrequestc                    sj   | d}|dk}|dkrd }n|dkr| d}nttjdd|jjd}	t|| ||||	|}
|
S )Nr   r   r    r   zInsufficient permissions.r   r,   )r!   r   r   r$   urlpathendswithr   )r.   r/   r0   r   r%   r1   r&   is_saas_onlyr   r"   roles_responser)   r)   r*   
list_roles,   s   
r7   z
/{role_id}role_idc                    s   t | |}|sttjdd|d}|d}|dkr0|dd d|fvr.ttjdd|S |dkrD|d|krBttjdd|S ttjdd	NzRole not found.r   r   r   r   r   zAccess denied.r    )r   r   r   HTTP_404_NOT_FOUNDr!   r$   )r8   r   r%   r   r&   r'   r)   r)   r*   get_roleH   s   


r;   role_updatec                    s   t | |}|sttjdd|d}|d}|dkr/|dd d|fvr.ttjddn|dkrB|d|krAttjddnttjddt| ||}|sXttjdd|S r9   )r   r   r   r:   r!   r$   r   )r8   r<   r   r%   r   r&   r'   updated_roler)   r)   r*   update_role_   s&   


r>   c                    s   t | |}|sttjdd|d}|d}|dkr/|dd d|fvr.ttjddn|dkrB|d|krAttjddnttjddt| |}|sWttjdd|S r9   )r   r   r   r:   r!   r$   r   )r8   r   r%   r   r&   r'   deleted_roler)   r)   r*   delete_rolez   s&   



r@   )%fastapir   r   r   r   r   typingr   app.dbr   app.v1.models.saas.rolemodelr	   r
   r   r   app.v1.services.saas.rolesr   r   r   r   r   app.v1.dependencies.authr   routerpostget_mongo_dbMongoDBr+   r!   intstrr7   r;   putr>   deleter@   r)   r)   r)   r*   <module>   sx    