+
    4Ssi                         ^ RI Ht ^ RIHt ^ RIHt ^RIHt ^RIH	t	H
t
HtHtHt ^RIHt ^RIHt ^RIHtHt  ! R	 R
]4      tR# )    )Dn)dom_sid)DS_GUID_USERS_CONTAINER)NotFound)DnField	EnumFieldIntegerFieldNtTimeFieldStringFieldGroup)OrganizationalPerson)AccountTypeUserAccountControlc                     a  ] tR t^#t o ]! R4      t]! R]4      t]	! R4      t
]	! R4      t]! RRR7      t]! RRR7      t]! R	4      t]! R
4      t]! RRR7      t]! RRR7      t]! RRR7      t]! R4      t]! RRR7      t]! R]4      t]! R4      tR tV 3R lR lt]R 4       t]R 4       t]R 4       t ]R 4       t!]V 3R lR l4       t"Rt#V t$R# )UsersAMAccountNamesAMAccountTypezmsDS-AssignedAuthNPolicyzmsDS-AssignedAuthNPolicySilobadPasswordTimeT)readonlybadPwdCountcodePagedisplayName
lastLogoff	lastLogon
logonCountprimaryGroupID
pwdLastSetuserAccountControluserPrincipalNamec                    V P                   # )z4Return sAMAccountName rather than cn for User model.)account_name)selfs   &:/usr/lib/python3/dist-packages/samba/domain/models/user.py__str__User.__str__4   s           c                    < V ^8  d   QhRS[ /#    returnr   )format__classdict__s   "r$   __annotate__User.__annotate__8   s     6 6% 6r'   c                f    VP                    RV P                   2p\        P                  ! WR7      # )z/Returns the primary Group object for this User.-)
object_sid)
domain_sidprimary_group_idr   get)r#   samdb	group_sids   && r$   get_primary_groupUser.get_primary_group8   s/    ''($*?*?)@A	yy55r'   c                J    V P                  V P                  4       \        4      # )zjReturn the base DN for the User model.

:param samdb: SamDB connection
:return: Dn to use for new objects
)get_wellknown_dnget_default_basednr   )r6   s   &r$   get_base_dnUser.get_base_dn=   s%     %%e&>&>&@&=? 	?r'   c                "    VP                  4       # )zReturn Dn used for searching so Computers will also be found.

:param samdb: SamDB connection
:return: Dn to use for searching
)get_root_basedn)clsr6   s   &&r$   get_search_dnUser.get_search_dnG   s     $$&&r'   c                     R # )user rF   r'   r$   get_object_classUser.get_object_classP   s    r'   c                     R\        W4      /pT P                  ! T3/ TB #   \         d(     R\        T4      /p L.  \         d	    RT/p  L@i ; ii ; i)zHelper function to find a user by Dn, objectSid, or sAMAccountName.

If the Dn or Sid can't be parsed, use sAMAccountName instead.
dnr2   r"   )r   
ValueErrorr   r5   )rA   r6   namequerys   &&& r$   find	User.findT   sh    	/2e?+E wwu&&&  	//%wt}5 /'./	/s$   " A=AAAAc                    < V ^8  d   QhRS[ /# r)   )str)r,   r-   s   "r$   r.   r/   e   s     D D Dr'   c                     \        \        V4      4      #   \         d8    T P                  Y4      pT'       d   TP                  u # \        RT R24      hi ; i)zReturn object_sid for the provided principal.

If principal is already an object sid then return without fetching,
this is different to `User.find` which must fetch the User.
z
Principal z not found.)rQ   r   rK   rN   r2   r   )rA   r6   	principalrE   s   &&& r$   get_sid_for_principalUser.get_sid_for_principald   sX    	Dwy)** 	D88E-D&I;kBCC	Ds    0AArF   N)%__name__
__module____qualname____firstlineno__r   r"   r   r   account_typer   assigned_policyassigned_silor
   bad_password_timer	   bad_pwd_count	code_pagedisplay_namelast_logoff
last_logonlogon_countr4   pwd_last_setr   user_account_controluser_principal_namer%   r8   staticmethodr=   classmethodrB   rG   rN   rT   __static_attributes____classdictcell__)r-   s   @r$   r   r   #   s-    /0L-{;L89O:;M#$5E >MZ(I}-LlT:K[48J|d;K#$45|d;L$%9;MN%&9:!6 6
 ? ? ' '   ' ' D Dr'   r   N)ldbr   samba.dcerpc.securityr   
samba.dsdbr   
exceptionsr   fieldsr   r   r	   r
   r   groupr   orgr   typesr   r   r   rF   r'   r$   <module>rs      s3   .  ) .   N N  % 2OD ODr'   