
    E
iW                        d dl mZmZmZmZ d dlmZ d dlmZm	Z	m
Z
 d dlmZmZmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZmZmZ d dlmZmZ d dl m!Z! d dl"m#Z# d dl$m%Z%  e       Z& e	       Z'e&jQ                  de       ee      fdedefd       Z)e&jU                  de%       ee       ee'      fdede
fd       Z+e&jU                  d       ee      fdefd       Z,y)    )	APIRouterDependsHTTPExceptionstatus)Session)OAuth2PasswordRequestForm
HTTPBearerHTTPAuthorizationCredentials)verify_passwordcreate_access_tokenoauth2_scheme)settings)get_db)User)
University)Course)TokenLoginRequestUserResponse)jwtJWTError)
Permission)Section)UserWithPermissionsResponsez/login)response_modelrequestdbc                 b   |j                  t              j                  t        j                  | j                  k(        j	                         }|r t        | j                  |j                        st        t        j                  d      t        dt        |j                        i      }|ddS )NzInvalid credentialsstatus_codedetailsub)databearer)access_token
token_type)queryr   filteremailfirstr   passwordpassword_hashr   r   HTTP_401_UNAUTHORIZEDr   strid)r   r   userr%   s       9/var/www/html/syllabuild_admin/backend/api/routes/auth.pyloginr2      s    88D>  w}}!<=CCEDw'7'79K9KL44(
 	
 'UCL,ABL(AA    z	/users/mecredentialsc                    |j                   }t        d|        |st        t        j                  d      	 t        j                  |t        j                  t        j                  g      }|j                  d      }|t        t        j                  d      	 | j                  t              j                  t        j                  |k(        j!                         }|st        t        j"                  d      | j                  t$        t&              j)                  t&        t$        j*                  t&        j                  k(        j                  t$        j,                  |j,                  k(        j/                         }|D cg c]m  \  }}|j                  |j,                  |j                  |j0                  |j2                  d|j4                  |j6                  |j8                  |j:                  d	o }	}}|j                  |j0                  |j<                  |j,                  |j>                  r|j>                  nd
d|	dS # t        $ r t        t        j                  d      w xY wc c}}w )NzToken received: zNot authenticatedr   )
algorithmsr"   z"Invalid authentication credentialszUser not found)r/   namekey)r/   role_idsectioncreatevieweditdelete )r/   r7   r)   r9   profile_picture)r0   permissions) r4   printr   r   r-   r   decoder   
SECRET_KEY	ALGORITHMgetr   r'   r   r(   r/   r*   HTTP_404_NOT_FOUNDr   r   join
section_idr9   allr7   r8   r;   r<   r=   r>   r)   r@   )
r   r4   tokenpayloaduser_idr0   role_permissionspermr:   permissions_datas
             r1   get_current_userrQ   "   s   ##E	UG
$%(D(DM`aas**UH$7$7XEWEWDXY++e$?F,H,HQuvv  88D>  G!34::<D11#
 	
 	W%	gz,,

:	;	
""dll2	3		 , . D' ''||jj{{
 kkIIIIkk	
 ( ''IIZZ||7;7K7Kt33QS
 (	 	M  s(D(DMqrrs(s   A#I A2I/%I,z
/dashboardc                 :   | j                  t              j                         }t        d|        | j                  t              j                         }t        d|        | j                  t
              j                         }t        d|        |||dddS )NzUser count: zUniversity count: zCourse count: )r0   
universitycoursez Dashboard retrieved successfully)countmessage)r'   r   rU   rB   r   r   )r   r0   rS   rT   s       r1   	dashboardrW   ^   s    88D>!D	L
 xx
#))+J	zl
+,88F!!#F	N6(
#$ $

 6 r3   N)-fastapir   r   r   r   sqlalchemy.ormr   fastapi.securityr   r	   r
   core.securityr   r   r   core.configr   
db.sessionr   db.models.userr   db.models.universityr   db.models.courser   db.schemas.userr   r   r   joser   r   db.models.permissionr   db.models.sectionr   db.schemas.permissionr   routersecuritypostr2   rF   rQ   rW    r3   r1   <module>rj      s    = = " _ _ M M     + # = =  + % =	<Xe,/6v 	B< 	BW 	B -	B K(CD#*6?`ghp`q : :A] : E:v L#FO '  r3   