File tree Expand file tree Collapse file tree 2 files changed +39
-0
lines changed
Umbraco.Core/Persistence/Repositories/Implement
Umbraco.Tests/Persistence/Repositories Expand file tree Collapse file tree 2 files changed +39
-0
lines changed Original file line number Diff line number Diff line change @@ -557,6 +557,16 @@ protected override void PersistUpdatedItem(IUser entity)
557
557
}
558
558
}
559
559
560
+ // If userlogin or the email has changed then need to reset security stamp
561
+ if ( changedCols . Contains ( "userLogin" ) || changedCols . Contains ( "userEmail" ) )
562
+ {
563
+ userDto . EmailConfirmedDate = null ;
564
+ userDto . SecurityStampToken = entity . SecurityStamp = Guid . NewGuid ( ) . ToString ( ) ;
565
+
566
+ changedCols . Add ( "emailConfirmedDate" ) ;
567
+ changedCols . Add ( "securityStampToken" ) ;
568
+ }
569
+
560
570
//only update the changed cols
561
571
if ( changedCols . Count > 0 )
562
572
{
Original file line number Diff line number Diff line change @@ -409,6 +409,35 @@ public void Can_Get_Paged_Results_With_Filter_And_Groups()
409
409
}
410
410
}
411
411
412
+ [ Test ]
413
+ public void Can_Invalidate_SecurityStamp_On_Username_Change ( )
414
+ {
415
+ // Arrange
416
+ var provider = TestObjects . GetScopeProvider ( Logger ) ;
417
+ using ( var scope = provider . CreateScope ( ) )
418
+ {
419
+ var repository = CreateRepository ( provider ) ;
420
+ var userGroupRepository = CreateUserGroupRepository ( provider ) ;
421
+
422
+ var user = CreateAndCommitUserWithGroup ( repository , userGroupRepository ) ;
423
+ var originalSecurityStamp = user . SecurityStamp ;
424
+
425
+ // Ensure when user generated a security stamp is present
426
+ Assert . That ( user . SecurityStamp , Is . Not . Null ) ;
427
+ Assert . That ( user . SecurityStamp , Is . Not . Empty ) ;
428
+
429
+ // Update username
430
+ user . Username = user . Username + "UPDATED" ;
431
+ repository . Save ( user ) ;
432
+
433
+ // Get the user
434
+ var updatedUser = repository . Get ( user . Id ) ;
435
+
436
+ // Ensure the Security Stamp is invalidated & no longer the same
437
+ Assert . AreNotEqual ( originalSecurityStamp , updatedUser . SecurityStamp ) ;
438
+ }
439
+ }
440
+
412
441
private void AssertPropertyValues ( IUser updatedItem , IUser originalUser )
413
442
{
414
443
Assert . That ( updatedItem . Id , Is . EqualTo ( originalUser . Id ) ) ;
You can’t perform that action at this time.
0 commit comments