66
77"""
88
9- import secrets
10-
119import sqlalchemy as sa
1210from alembic import op
1311from dishka import AsyncContainer , Scope
@@ -180,26 +178,19 @@ async def _migrate_object_sids(
180178 ),
181179 )
182180
183- identifier : str | None = None
181+ domain_identifier : str | None = None
184182 if domain_sid_from_column :
185183 parts = domain_sid_from_column .split ("-" )
186184 # "S-1-5-21-AAA-BBB-CCC" -> "AAA-BBB-CCC"
187185 if len (parts ) >= 7 and domain_sid_from_column .startswith (
188186 "S-1-5-21-" ,
189187 ):
190- identifier = "-" .join (parts [4 :7 ])
191-
192- if identifier is None :
193- identifier = (
194- f"{ secrets .randbits (32 )} -"
195- f"{ secrets .randbits (32 )} -"
196- f"{ secrets .randbits (32 )} "
197- )
188+ domain_identifier = "-" .join (parts [4 :7 ])
198189
199190 session .add (
200191 Attribute (
201192 name = "DomainIdentifier" ,
202- value = identifier ,
193+ value = domain_identifier ,
203194 directory_id = domain .id ,
204195 ),
205196 )
@@ -228,7 +219,7 @@ async def _migrate_object_sids(
228219 ),
229220 )
230221
231- built_in_sid_prefix = "S-1-5-32 "
222+ sid_prefix = "S-1-5-21 "
232223 for dir_name , rid in (
233224 (DOMAIN_ADMIN_GROUP_NAME , SecurityPrincipalRid .DOMAIN_ADMINS ),
234225 (DOMAIN_USERS_GROUP_NAME , SecurityPrincipalRid .DOMAIN_USERS ),
@@ -249,7 +240,7 @@ async def _migrate_object_sids(
249240 ),
250241 )
251242 .values (
252- value = f"{ built_in_sid_prefix } -{ int (rid )} " ,
243+ value = f"{ sid_prefix } - { domain_identifier } -{ int (rid )} " ,
253244 ),
254245 )
255246
@@ -263,8 +254,8 @@ async def _migrate_object_sids(
263254 )
264255 .values (
265256 value = (
266- f"{ built_in_sid_prefix } "
267- f"-{ int (SecurityPrincipalRid .ADMINISTRATOR )} "
257+ f"{ sid_prefix } "
258+ f"-{ domain_identifier } - { int (SecurityPrincipalRid .ADMINISTRATOR )} "
268259 ),
269260 ),
270261 )
@@ -286,19 +277,16 @@ async def _init_rid_manager(
286277 rid_set_use_case = await cnt .get (RIDSetUseCase )
287278 role_use_case = await cnt .get (RoleUseCase )
288279
289- if not await get_base_directories (session ):
280+ base_dn_list = await get_base_directories (session )
281+ if not base_dn_list :
290282 return
283+ domain = base_dn_list [0 ]
291284
292285 try :
293286 rid_manager_dir = await rid_gateway .get_rid_manager ()
294287 except RIDManagerNotFoundError :
295288 rid_manager_dir = await rid_setup_gateway .set_rid_manager ()
296289
297- base_dn_list = await get_base_directories (session )
298- if not base_dn_list :
299- return
300- domain = base_dn_list [0 ]
301-
302290 domain_identifier = await session .scalar (
303291 select (Attribute ).where (
304292 qa (Attribute .directory_id ) == domain .id ,
@@ -341,21 +329,17 @@ async def _init_rid_manager(
341329 directory = rid_manager_dir ,
342330 )
343331
344- domain_controller = await rid_gateway .get_domain_controller ()
345- rid_set_dir : Directory | None = None
332+ domain_controller = await rid_setup_gateway .get_domain_controller ()
346333 try :
347- rid_set_dir = await rid_set_gateway .get (domain_controller )
334+ await rid_set_gateway .get (domain_controller )
348335 except RIDManagerRidSetNotFoundError :
349- rid_set_dir = None
350-
351- if rid_set_dir is None :
352336 previous_allocation_pool = (
353337 await rid_manager_use_case .allocate_pool ()
354338 )
355339 allocation_pool = await rid_manager_use_case .allocate_pool ()
356340 lower , _ = from_qword (previous_allocation_pool )
357341
358- rid_set_dir = await rid_set_use_case .add (
342+ await rid_set_use_case .add (
359343 domain_controller ,
360344 RIDSetAllocationParamsDTO (
361345 next_rid = lower ,
0 commit comments