§
    t�’jœ  ã                  ón   — d dl mZ d dlZd dlmZ d dlmZ  ej        d¦  «        Z G d„ de¦  «        Z	dS )é    )ÚannotationsN)ÚAny)ÚBasePostgresClientzdscons.auth.google_userc                  ó   — e Zd ZdZdd„ZdS )ÚUserGoogleMixinz,Google user account lookup and registration.Úgoogle_profileúdict[str, Any]Úreturnc                ó¾  — |                      dd¦  «                             ¦   «                              ¦   «         }|                      dd¦  «        }|                      d¦  «        p|                     d¦  «        d         }|                      dd¦  «        }|                      ¦   «         5 }|                     ¦   «         5 }|                     d¦  «         |                     ¦   «         }|r|d	         nd
}	|                     d||f¦  «         |                     ¦   «         }
|
rS|                     d|||
d	         f¦  «         |                     ¦   «          i |
¥d|i¥cd
d
d
¦  «         cd
d
d
¦  «         S |                     d|f¦  «         |                     ¦   «         }|r|d	         nd
}|dv }|rd}n£|dk    rd}nš|r_|                      d¦  «        pd                     ¦   «         }d|v sd|v rd}ndd|v sd|v sd|v rd}nUd|v rd}nNd|v rd}nGd|v sd|v rd}n<d}n9|                     d¦  «         |                     ¦   «         }|d          dk    rdnd!}|                     d"|	||||||f¦  «         |                     ¦   «         }|                     ¦   «          |cd
d
d
¦  «         cd
d
d
¦  «         S # 1 swxY w Y   	 d
d
d
¦  «         d
S # 1 swxY w Y   d
S )#zILookup existing user by Google sub/email or register new company account.ÚemailÚ ÚsubÚnameú@r   Úpicturez!SELECT id FROM companies LIMIT 1;ÚidNa&  
                    SELECT u.*, e.employee_code, e.department, e.job_title
                    FROM erp_users u
                    LEFT JOIN employees e ON u.linked_employee_id = e.id
                    WHERE u.oauth_sub = %s OR u.email = %s
                    LIMIT 1;
                    zô
                        UPDATE erp_users
                        SET oauth_sub = %s, avatar_url = %s, last_login_at = NOW(), updated_at = NOW()
                        WHERE id = %s
                        RETURNING *;
                        Ú
avatar_urlzOSELECT id, full_name, job_title FROM employees WHERE LOWER(email) = %s LIMIT 1;)zmirsixabcf2@gmail.comzdinhsonconstruction@gmail.comzadmin@dscons.vnÚ
superadminzquynhquynh18051998@gmail.comÚsite_engineerÚ	job_titleu   giÃ¡m Ä‘á»‘cÚdirectoru	   chá»‰ huyÚpmu	   trÆ°á»Ÿngu
   káº¿ toÃ¡nÚ
accountantu   ká»¹ sÆ°u   mÃ¡yu
   cÆ¡ giá»›iÚmechanicz&SELECT COUNT(*) as cnt FROM erp_users;ÚcntÚviewera½  
                    INSERT INTO erp_users (
                        company_id, email, full_name, avatar_url,
                        oauth_provider, oauth_sub, role, linked_employee_id,
                        is_active, last_login_at
                    ) VALUES (
                        %s, %s, %s, %s,
                        'google', %s, %s, %s,
                        TRUE, NOW()
                    ) RETURNING *;
                    )	ÚgetÚstripÚlowerÚsplitÚget_connectionÚcursorÚexecuteÚfetchoneÚcommit)Úselfr   r   r   r   r   ÚconnÚcurÚcompÚ
company_idÚuserÚmatched_empÚlinked_employee_idÚis_super_ownerÚinitial_roleÚ	job_lowerÚ	count_resÚnew_users                     ú3C:\Projects\DSCons\app\services\auth\user_google.pyÚget_or_create_google_userz)UserGoogleMixin.get_or_create_google_user   s‡  € ð ×"Ò" 7¨BÑ/Ô/×5Ò5Ñ7Ô7×=Ò=Ñ?Ô?ˆØ× Ò  ¨Ñ+Ô+ˆØ×!Ò! &Ñ)Ô)Ð@¨U¯[ª[¸Ñ-=Ô-=¸aÔ-@ˆØ ×$Ò$ Y°Ñ3Ô3ˆð × Ò Ñ"Ô"ð b	  dØ—’‘”ð a  #Ø—’Ð?Ñ@Ô@Ð@Ø—|’|‘~”~�Ø+/Ð9˜T $œZ˜Z°T�
ð —’ðð ˜%�Lñ	ô 	ð 	ð —|’|‘~”~�àð ;à—K’Kðð ˜g t¨D¤zÐ2ñô ð ð —K’K‘M”M�MØ:˜dÐ: L°'Ð:Ð:ð=a ð a ð a ð a ñ a ô a ð a ðb	 ð b	 ð b	 ð b	 ñ b	 ô b	 ð b	 ð b	 ðD —’ØeØ�Hñô ð ð "Ÿlšl™nœn�Ø:EÐ%O [°Ô%6Ð%6È4Ð"ð "'ð +ð "�ð
 "ð WØ#/�L�LØÐ<Ò<Ð<Ø#2�L�LØ ð WØ!,§¢°Ñ!=Ô!=Ð!CÀ× JÒ JÑ LÔ L�IØ%¨Ð2Ð2°jÀIÐ6MÐ6MØ'1˜˜à# yÐ0Ð0Ø 9Ð,Ð,Ø&¨)Ð3Ð3à'+˜˜Ø%¨Ð2Ð2Ø'3˜˜Ø# yÐ0Ð0Ø'6˜˜Ø 9Ð,Ð,°À	Ð0IÐ0IØ'1˜˜à'6˜˜à—K’KÐ HÑIÔIÐIØ #§¢¡¤�IØ3<¸UÔ3CÀqÒ3HÐ3H < <Èh�Là—’ð
ð #ØØØØØ$Ø*ðñô ð ð, Ÿ<š<™>œ>�Ø—’‘”�ØðCa ð a ð a ð a ñ a ô a ð a ðb	 ð b	 ð b	 ð b	 ñ b	 ô b	 ð b	 ð b	 ða ð a ð a ð a øøøð a ð a ð a ð a ð a ðb	 ð b	 ð b	 ñ b	 ô b	 ð b	 ð b	 ð b	 ð b	 ð b	 ð b	 ð b	 øøøð b	 ð b	 ð b	 ð b	 ð b	 ð b	 sD   Â+KÃ BJ9ÅKÅ7D)J9Ê KÊ9J=	Ê=KË J=	ËKËKËKN)r   r	   r
   r	   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r4   © ó    r3   r   r      s4   € € € € € Ø6Ð6ðl ð l ð l ð l ð l ð l r:   r   )
Ú
__future__r   ÚloggingÚtypingr   Úapp.core.postgres.baser   Ú	getLoggerÚloggerr   r9   r:   r3   ú<module>rA      s–   ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð à 5Ð 5Ð 5Ð 5Ð 5Ð 5à	ˆÔ	Ð4Ñ	5Ô	5€ðo ð o ð o ð o ð o Ð(ñ o ô o ð o ð o ð o r:   