o
    "hdsT  ã                   @   sÌ  d dl Z d dlZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd	„ d	eƒZe d
d¡Ze dd¡Z	da
i ae dd¡Zeƒ ae dd¡Ze dd¡Ze  ¡ adZed Zed Zed Zed Zed Zed Zed Zed aed Zg d¢Zg d¢Zd Zd!Z d"Z!d#e"d$e"fd%d&„Z#ee	fd'e"d(e"fd)d*„Z$efd+e"fd,d-„Z%d.d/„ Z&ddd0e"fd1d2„Z'ddd3e"d0e"fd4d5„Z(ded6e"d7e"d0e"fd8d9„Z)dfd3e"d6e"d0e"fd;d<„Z*ddd6e"d0e"fd=d>„Z+ddd?e"d@e"d0e"fdAdB„Z,ddd0e"fdCdD„Z-ddi eeefdEe"dFe"dGe"dHe.dIe"dJe"d0e"fdKdL„Z/dddMe"d0e"fdNdO„Z0dddMe"dPedQe"d0e"fdRdS„Z1dddTe"d0e"fdUdV„Z2dWe"fdXdY„Z3dddWe"fdZd[„Z4ddd?e"d@e"d0e"fd\d]„Z5ded^e"d0e"fd_d`„Z6e7dak�rde(edbdc�Z8e9e8ƒ e:ƒ  dS dS )gé    Nc                   @   ó   e Zd ZdZdS )ÚInvalidCredentialszRaise when auth failsN©Ú__name__Ú
__module__Ú__qualname__Ú__doc__© r	   r	   ú@/home/gothic-suse/public_html/fortanix-consumer/fortanix/main.pyr      ó    r   c                   @   r   )ÚAccountNotExistz,Raise when not account subscription assignedNr   r	   r	   r	   r
   r      r   r   c                   @   r   )ÚUserNotExistz$Raise when user is'nt already existsNr   r	   r	   r	   r
   r   
   r   r   c                   @   s"   e Zd ZdZddd„Zdd„ ZdS )ÚCustomExceptionz#Raise when user it`s already existsNc                 C   s   || _ || _d S ©N)ÚmessageÚpayload)Úselfr   r   r	   r	   r
   Ú__init__   s   
zCustomException.__init__c                 C   s
   t | jƒS r   )Ústrr   )r   r	   r	   r
   Ú__str__   s   
zCustomException.__str__r   )r   r   r   r   r   r   r	   r	   r	   r
   r      s    
r   ZFORTANIX_USERzyonatan.hernandez@triara.comZFORTANIX_PASSz!2Fqa7wK7YcQyvg*QJgHÚ ZACCOUNTz$43b1eae3-27f8-4a5f-adf6-7afa9e4ddd9eÚACCOUNT_ROLEz$83533bca-70a0-4a7d-96e0-f37e4e266e95Ú
GROUP_ROLEz$98feb5b2-0dec-4abf-910c-1030c1951907zhttps://apps.smartkey.io/zsys/v1/session/refreshzsys/v1/session/authzsys/v1/groupszsys/v1/appszsys/v1/userszsys/v1/accountszsys/v1/session/select_accountzsys/v1/roles)ZINVITE_USERS_TO_ACCOUNTZDELETE_USERS_FROM_ACCOUNTZMANAGE_ACCOUNT_USERSZCREATE_ACCOUNT_SOBJECT_POLICIESZUPDATE_ACCOUNT_SOBJECT_POLICIESZDELETE_ACCOUNT_SOBJECT_POLICIESZMANAGE_ACCOUNT_SOBJECT_POLICIESZGET_ADMIN_APPSZGET_ALL_APPROVAL_REQUESTSZGET_CUSTOM_ROLESZGET_EXTERNAL_ROLESZGET_ALL_USERSZGET_ACCOUNT_USAGE)(ZADD_USERS_TO_GROUPZDELETE_USERS_FROM_GROUPZMANAGE_GROUP_USERSZCREATE_GROUP_SOBJECT_POLICIESZUPDATE_GROUP_SOBJECT_POLICIESZDELETE_GROUP_SOBJECT_POLICIESZMANAGE_GROUP_SOBJECT_POLICIESZCREATE_APPSZUPDATE_APPSZRETRIEVE_APP_SECRETSZCREATE_PLUGINSZUPDATE_PLUGINSZMANAGE_PLUGINSZCREATE_SOBJECTSZEXPORT_SOBJECTSZCOPY_SOBJECTSZWRAP_SOBJECTSZUNWRAP_SOBJECTSZUPDATE_SOBJECTS_ENABLED_STATEZROTATE_SOBJECTSZDELETE_SOBJECTSZDESTROY_SOBJECTSZREVOKE_SOBJECTSZACTIVATE_SOBJECTSZREVERT_SOBJECTSZDELETE_KEY_MATERIALZMOVE_SOBJECTSZUPDATE_KEY_OPSZUPDATE_SOBJECT_POLICIESZUPDATE_SOBJECTS_PROFILEZSCAN_EXTERNAL_SOBJECTSZRESTORE_EXTERNAL_SOBJECTSZDERIVE_SOBJECTSZTRANSFORM_SOBJECTSZ	GET_GROUPZGET_SOBJECTSZGET_APPSZGET_PLUGINSZGET_GROUP_APPROVAL_REQUESTSZGET_AUDIT_LOGSZ
add_groupsZ
del_groupséd   ÚerrorÚtype_of_resourcec                 C   s@   g }t ƒ }| |d< d |d< d |d< d |d< ||d< | |¡ |S )NÚmsgÚidÚnameÚ
created_atr   )ÚdictÚappend)r   r   Úreturn_dataÚtmp_eler	   r	   r
   Úreturn_error¯   s   
r$   ÚuserÚpasswordc                 C   sj   z&t jt| |fd�}|jdkrt‚| ¡ }|d addt› �dœatƒ  W d S  ty4   t	dƒ Y d S w )N)ZauthéÈ   Úaccess_tokenzapplication/jsonzBearer )ZAcceptZAuthorizationzerror on credentials)
ÚrequestsÚpostÚAUTH_URLÚstatus_coder   ÚjsonÚTOKENÚHEADERSÚselect_accountÚprint)r%   r&   ÚresponseÚdatar	   r	   r
   Úauthenticate¼   s   
ÿr4   r   c                 C   sF   zt jtd| itd�}|jdkrt‚W d S  ty"   tdƒ Y d S w )NÚacct_id©r-   Úheadersr'   zaccount not exist)ÚSESSION_AUTHr*   ÚSELECT_ACCOUNTr/   r,   r   r1   )r   r2   r	   r	   r
   r0   Ê   s   
ÿÿr0   c               
   C   s\   zt jttd�} | jdkrtƒ  W d S W d S  ty- } zt|jƒ W Y d }~d S d }~ww )N©r7   éÌ   )	r8   r*   ÚREFRESH_URLr/   r,   r4   Ú	Exceptionr1   r   )r2   r   r	   r	   r
   Úrefresh_sessionÓ   s   
ÿ€ÿr>   r5   c                 C   s4   t ƒ  | s
tddƒS t| d� tjttd�}| ¡ S )Núnot account selectedÚgroup©r   r:   )r>   r$   r0   r8   ÚgetÚ
GROUPS_URLr/   r-   )r5   r2   r	   r	   r
   Ú
get_groupsÝ   s   

rD   Úgroup_idc              
   C   s  t ƒ  |s
tddƒS t|d� g }d}d}t}zW|rl| ||dœ}tjt|td�}|jdkr2t	|j
ƒ‚| ¡ }|D ]$}	tƒ }
d	|
d
< |	d |
d< |	d |
d< |	d |
d< d|
d< | |
¡ q8t|ƒ|krh||7 }nd}|s|W S  t	y† } zt|jƒ W Y d }~d S d }~ww )Nr?   ÚappsrA   r   T)rE   ÚoffsetÚlimit©Úparamsr7   r'   Údoner   Úapp_idr   r   r   Úappr   F)r>   r$   r0   ÚLIMITr8   rB   ÚAPPS_URLr/   r,   r   Útextr-   r    r!   Úlenr1   r   )rE   r5   r"   rG   Úhas_morerH   rJ   r2   Útmp_dataÚeler#   r   r	   r	   r
   Úget_apps_data_by_groupå   s:   




ï€ÿrU   Ú
group_nameÚ
group_descc           	   
   C   sØ   t ƒ  t|d� g }zI| ||dœ}tjt|td�}|jdkr#t|jƒ‚t	d| › d�ƒ | 
¡ }tƒ }d|d< |d	 |d
< |d |d< |d |d< d|d< | |¡ |W S  tyk } zt|jdƒW  Y d }~S d }~ww )NrA   )r   Údescriptionr5   r6   éÉ   úgroup 'ú	' createdrK   r   rE   r   r   r   r@   r   )r>   r0   r8   r*   rC   r/   r,   r   rP   r1   r-   r    r!   r$   r   )	rV   rW   r5   r"   r3   r2   Ú
group_datar#   r   r	   r	   r
   Úcreate_group  s2   
ý


€ÿr]   Fc              
   C   sl  t ƒ  |s
tddƒS t|d� tƒ }z‹| s|stdƒ‚| s#t|d�} n |sCtjtd| › � t	d�}|j
dkr;t|jƒ‚| ¡ }|d	 }|rqt| d
�}|D ]$}tjtd|d › � t	d�}	|	j
dkrft|	jƒ‚td|d	 › d�ƒ qLtjtd| › � t	d�}	|	j
dkr‡t|	jƒ‚td|› d�ƒ d|› d�|d< d|d< |W S  tyµ }
 zt|
jdƒW  Y d }
~
S d }
~
ww )Nr?   r@   rA   zNot parameters sended©rV   ú/r:   r'   r   )rE   r   r;   zApp 'z	' deletedrZ   zgroup z deletedr   TrK   )r>   r$   r0   r    r   Úget_group_by_namer8   rB   rC   r/   r,   rP   r-   rU   ÚdeleterO   r1   r   )rE   rV   Úforcer5   r"   Zgroup_responser\   rF   rM   r2   r   r	   r	   r
   Údelete_group  sD   








€ÿrc   c              
      óŽ   t ƒ  |s
tddƒS t|d� ztƒ }tt‡ fdd„|ƒƒ}t|ƒdkr+|d d W S tdƒ‚ tyF } zt|j	ƒ W Y d }~d S d }~ww )	Nr?   r@   rA   c                    ó   | d ˆ kS ©Nr   r	   )Úgroupsr^   r	   r
   Ú<lambda>I  ó    z#get_group_by_name.<locals>.<lambda>r   rE   zgroup not found)
r>   r$   r0   rD   ÚlistÚfilterrQ   r   r1   r   )rV   r5   rg   Úresr   r	   r^   r
   r`   B  ó   

€ÿr`   Ú	role_nameÚ	role_descc           	   
   C   sð   t ƒ  |s
tddƒS t|d� g }zN| |dddtdœdœ}tjt|td�}|jd	kr/t	|j
ƒ‚td
| › d�ƒ | ¡ }tƒ }d|d< |d |d< |d |d< |d |d< d|d< | |¡ |W S  t	yw } zt|jdƒW  Y d }~S d }~ww )Nr?   Ú
group_rolerA   r@   F©Z	exclusiveÚkindZpermissions©r   rX   rr   Údetailsr6   rY   zgroup role 'r[   rK   r   Úrole_idr   r   r   r   )r>   r$   r0   ÚGROUP_PERMISSIONSr8   r*   Ú	ROLES_URLr/   r,   r   rP   r1   r-   r    r!   r   ©	rn   ro   r5   r"   r3   r2   Z	role_datar#   r   r	   r	   r
   Úcreate_group_roleQ  s>   

ýü



€ÿry   c           	   
   C   sÄ   t ƒ  | s
tddƒS t| d� g }d}d}t}z2|rG||dœ}tjttd�}|jdkr0t	|j
ƒ‚| ¡ }||7 }t|ƒ|krC||7 }nd	}|s|W S  t	ya } zt|jdƒW  Y d }~S d }~ww )
Nr?   r%   rA   r   T)rG   rH   r:   r'   F)r>   r$   r0   rN   r8   rB   Ú	USERS_URLr/   r,   r   rP   r-   rQ   r   )	r5   r3   rG   rR   rH   rJ   r2   rS   r   r	   r	   r
   Ú	get_usersu  s2   





ö€ÿr{   ÚemailÚ
first_nameÚ	last_nameÚ	group_idsÚaccount_rolerp   c              
   C   s@  t ƒ  |s
tddƒS t|d� g }| |gdœ}zpt|ƒdkr"tdƒ‚tƒ }	|D ]}
|g|	|
< q'tjtd |t	d�}|j
d	krBtd
ƒ‚| ¡ }tjtd|d › � |d ||dœt	d� t|d |	t|d� tƒ }d|d< |d |d< |d |d< d |d< d|d< | |¡ |W S  tyŸ } zt|jdƒW  Y d }~S d }~ww )Nr?   r%   rA   )Ú
user_emailr€   r   zgroup ids are emptyz/inviter6   i™  zthis user already existr_   Úuser_id)r‚   r}   r~   rI   )r‚   rg   Úactionr5   rK   r   r   r�   r   r   r   )r>   r$   r0   rQ   r   r    r8   r*   rz   r/   r,   r-   ÚpatchÚuser_mod_groupÚ
ADD_GROUPSr!   r   )r|   r}   r~   r   r€   rp   r5   r"   r3   rg   Úgidr2   Ú	user_datar#   r   r	   r	   r
   Úcreate_userŽ  sL   

þ
ýü
€ÿr‰   r‚   c              
   C   s  t ƒ  |s
tddƒS t|d� t|d� tƒ }zLtjtd| › � td�}|jdkr-t	dƒ‚| 
¡ }|d }t|ƒd	krBt| |td
� tjtd| › d� td�}|jdkrYt	|jƒ‚d|d< d|d< |W S  t	y€ } zt|jƒ t|jdƒW  Y d }~S d }~ww )Nr?   r%   rA   r_   r:   r'   zuser not existrg   r   )r‚   rg   rƒ   z	/accountsr;   zuser deletedr   TrK   )r>   r$   r0   r    r8   rB   rz   r/   r,   r   r-   rQ   r…   Ú
DEL_GROUPSra   rP   r1   r   )r‚   r5   r"   Zresposerˆ   rg   Zdel_usrr   r	   r	   r
   Údelete_user´  s2   






€þr‹   rg   rƒ   c              
   C   sˆ   t ƒ  |s
tddƒS t|d� ztjtd| › � ||itd�}|jdkr)t|j	ƒ‚W d S  tyC } zt
|jƒ W Y d }~d S d }~ww )Nr?   r%   rA   r_   r6   r'   )r>   r$   r0   r8   r„   rz   r/   r,   r   rP   r1   r   )r‚   rg   rƒ   r5   r2   r   r	   r	   r
   r…   Ï  s   



ÿ€ÿr…   r�   c              
      rd   )	Nr?   r%   rA   c                    re   )Nr�   r	   )Úusers©r�   r	   r
   rh   â  ri   z#get_user_by_email.<locals>.<lambda>r   r‚   zuser not found)
r>   r$   r0   r{   rj   rk   rQ   r   r1   r   )r�   r5   rŒ   rl   r   r	   r�   r
   Úget_user_by_emailÛ  rm   rŽ   Ú	acct_namec              
   C   sÐ   t ƒ  tƒ  g }tƒ }zDd| i}tjt|td�}|jdkr"t|j	ƒ‚t
d| › d�ƒ | ¡ }d|d< |d |d	< |d |d< |d
 |d
< d|d< | |¡ |W S  tyg } zt|jdƒW  Y d }~S d }~ww )Nr   r6   rY   z	account 'r[   rK   r   r5   r   r   Úaccountr   )r>   r0   r    r8   r*   ÚCHILD_AC_URLr/   r,   r   rP   r1   r-   r!   r$   r   )r�   r"   Ztmp_elemr3   r2   Z	acct_datar   r	   r	   r
   Úcreate_accountë  s.   ÿ


€ÿr’   c                    s¬   t ƒ  tjttd�}| ¡ }tt‡ fdd„|ƒƒ}|D ]8}t|d d�}|D ]}t	|d |d dd� q&t
|d d	� tjtd
|d › � td�}|jdkrSt|jƒ‚qd S )Nr:   c                    re   rf   r	   )r3   ©r�   r	   r
   rh     ri   z&delete_accts_by_name.<locals>.<lambda>r5   )r5   rE   T)rE   r5   rb   rA   r_   r;   )r>   r8   rB   ÚACCOUNTS_URLr/   r-   rj   rk   rD   rc   r0   ra   r‘   r,   r   rP   )r�   r2   r3   rl   Úrrg   Úgr	   r“   r
   Údelete_accts_by_name  s   

ÿúr—   c           	   
   C   sð   t ƒ  g }|stddƒS t|d� zN| |dddtdœdœ}tjt|td�}|jd	kr/t	|j
ƒ‚td
| › d�ƒ | ¡ }tƒ }d|d< |d |d< |d |d< |d |d< d|d< | |¡ |W S  t	yw } zt|jdƒW  Y d }~S d }~ww )Nr?   r€   rA   r�   Frq   rs   r6   rY   zaccount role 'r[   rK   r   ru   r   r   r   r   )r>   r$   r0   ÚACCOUNT_PERMISSIONSr8   r*   rw   r/   r,   r   rP   r1   r-   r    r!   r   rx   r	   r	   r
   Úcreate_account_role  s>   

ýü



€ÿr™   rL   c              
   C   s¾   t ƒ  g }|stddƒS t|d� z5tjtd| › � td�}|jdkr(t|j	ƒ‚t
ƒ }d|d< | |d	< d |d
< d |d< d|d< | |¡ |W S  ty^ } zt|jdƒW  Y d }~S d }~ww )Nr?   r€   rA   r_   r:   r;   Zdeletedr   r   r   r   rM   r   )r>   r$   r0   r8   ra   rO   r/   r,   r   rP   r    r!   r   )rL   r5   r"   r2   r#   r   r	   r	   r
   Ú
delete_app7  s*   




€ÿrš   Ú__main__z$9b356a2d-c941-443e-aef6-caae65e18e9c)r5   rE   )r   )r   r   )r   r   Fr   );r)   Úosr=   r   r   r   r   ÚgetenvZ	USER_NAMEZPASSWORDr.   r/   Z
ACCOUNT_IDr    ZACCOUNTS_LISTr   r   Úsessionr8   ZBASE_URLr<   r+   rC   rO   rz   r”   r‘   r9   rw   r˜   rv   r†   rŠ   rN   r   r$   r4   r0   r>   rD   rU   r]   rc   r`   ry   r{   Úsetr‰   r‹   r…   rŽ   r’   r—   r™   rš   r   rF   r1   Úexitr	   r	   r	   r
   Ú<module>   sj    	6B	
%$4&"

ð