o
    h                     @   sz   d dl mZ d dlm  m  mZ d dlmZ d dlm	Z	 d dl
mZmZ d dlmZmZ d dlmZ G dd	 d	ZdS )
    )OAuth2PasswordRequestFormN)Session)
JWTManager)SeafarererRoleBaseTblSeafarerRole)TblUsers	UsersBase)CustomResponsec                   @   st   e Zd ZdedefddZdejfddZde	fd	d
Z
dejfddZdejfddZdd ZdejfddZdS )AuthServicedbtokenc                 C   s   || _ || _d S )N)r   r   )selfr   r    r   0/var/www/html/beacon-api/app/api/auth/service.py__init__
   s   
zAuthService.__init__requestc                    0   t |}t|| j | j  tdddS )N1zUser created successfullystatusmessage)r   model_validater   creater   commitr	   r   r   created_userr   r   r   create_user   
   

zAuthService.create_usercredentialsc                    s   t || j}|stdddS |j|jkrtdddS |j|j|jd d d}|jdv r2|j|d< n|jd	kr=|j|d
< ntdddS t	
|}t	|}|||dS )N-1zPlease enter a valid user namer   z-2zIncorrect password)subuser_idrole_idadmin_idseafarer_id>            r#      r$   z-3zUser role not supported)access_tokenrefresh_tokentoken_payload)r   get_by_user_filterr   r	   password	user_nameusr_idr"   	entity_idr   create_access_tokencreate_refresh_token)r   r   user_logr+   r)   r*   r   r   r   
user_login   s.   



zAuthService.user_loginc                    J   t |}|jd u rtdddS t|j|| j | j  tdddS )Nr   User id not foundr   r   zUser updated successfully)r   r   r/   r	   r   updater   r   )r   r   updated_userr   r   r   update_user;   s   


zAuthService.update_userc                    r   )Nr   zRole created successfullyr   )r   r   r   r   r   r   r	   r   r   r   r   create_roleC   r   zAuthService.create_rolec                    s.   | j t }dd |D }tdd|dS )Nc                 S   s   g | ]
}t j| qS r   )schemasSeafarerRoler   
model_dump).0roler   r   r   
<listcomp>K   s    z-AuthService.get_all_roles.<locals>.<listcomp>r   zRoles fetched successfully)r   r   data)r   queryr   allr	   )r   roles
roles_datar   r   r   get_all_rolesI   s   zAuthService.get_all_rolesc                    r5   )Nr   r6   r   r   zUser Role updated successfully)r   r   
sf_role_idr	   r   r7   r   r   )r   r   updated_user_roler   r   r   update_roleN   s   


zAuthService.update_roleN)__name__
__module____qualname__r   dictr   r;   
UserCreater   r   r4   
UserUpdater9   SeafarerRoleCreater:   rF   SeafarererRoleUpdaterI   r   r   r   r   r
   	   s    r
   )fastapi.securityr   app.api.auth.schemasapiauthr;   sqlalchemy.ormr   app.dependency.authanticationr   app.models.main.seafarer_roler   r   app.models.main.usersr   r   app.utils.schemas_utilsr	   r
   r   r   r   r   <module>   s    