/// <summary> /// Authenticates the specified user name and password /// </summary> /// <param name="user">The user.</param> /// <param name="password">The password.</param> /// <returns></returns> public override bool Authenticate( UserLogin user, string password ) { var passwordIsCorrect = CheckF1Password( user.UserName, password ); if ( passwordIsCorrect ) { using ( var rockContext = new RockContext() ) { var userLoginService = new UserLoginService( rockContext ); var userFromService = userLoginService.Get( user.Id ); var databaseGuid = Rock.SystemGuid.EntityType.AUTHENTICATION_DATABASE.AsGuid(); userFromService.EntityTypeId = EntityTypeCache.Read( databaseGuid ).Id; userLoginService.SetPassword( userFromService, password ); rockContext.SaveChanges(); } } return passwordIsCorrect; }
private UserLogin SetNewPassword( UserLogin user, string rawPassword ) { string hash = EncodeBcrypt( rawPassword ); if ( hash == null ) { throw new NotImplementedException( "Could not generate hash from password." ); } using ( var context = new RockContext() ) { var userService = new UserLoginService( context ); var contextUser = userService.Get( user.Id ); contextUser.Password = hash; context.SaveChanges(); return contextUser; } }
/// <summary> /// Handles the SaveClick event of the modalDetails control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param> protected void mdDetails_SaveClick( object sender, EventArgs e ) { if ( _canEdit ) { UserLogin userLogin = null; var service = new UserLoginService(); int userLoginId = int.Parse( hfIdValue.Value ); if ( userLoginId != 0 ) { userLogin = service.Get( userLoginId ); } if ( userLogin == null ) { userLogin = new UserLogin(); service.Add( userLogin, CurrentPersonId ); } userLogin.UserName = tbUserName.Text; userLogin.IsConfirmed = cbIsConfirmed.Checked; userLogin.IsLockedOut = cbIsLockedOut.Checked; var entityType = EntityTypeCache.Read( compProvider.SelectedValue.AsGuid() ); if ( entityType != null ) { userLogin.EntityTypeId = entityType.Id; if ( !string.IsNullOrWhiteSpace( tbPassword.Text ) ) { var component = AuthenticationContainer.GetComponent( entityType.Name ); if ( component != null && component.ServiceType == AuthenticationServiceType.Internal ) { if ( tbPassword.Text == tbPasswordConfirm.Text ) { if ( UserLoginService.IsPasswordValid( tbPassword.Text ) ) { userLogin.Password = component.EncodePassword( userLogin, tbPassword.Text ); userLogin.LastPasswordChangedDateTime = DateTime.Now; } else { nbErrorMessage.Title = "Invalid Password"; nbErrorMessage.Text = UserLoginService.FriendlyPasswordRules(); nbErrorMessage.Visible = true; return; } } else { nbErrorMessage.Title = "Invalid Password"; nbErrorMessage.Text = "Password and Confirmation do not match."; nbErrorMessage.Visible = true; return; } } } } if ( !userLogin.IsValid ) { // Controls will render the error messages return; } RockTransactionScope.WrapTransaction( () => { service.Save( userLogin, CurrentPersonId ); } ); mdDetails.Hide(); BindGrid(); } }
/// <summary> /// Handles the Delete event of the gUserLogins control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="RowEventArgs" /> instance containing the event data.</param> protected void gUserLogins_Delete( object sender, RowEventArgs e ) { if ( _canEdit ) { var service = new UserLoginService(); var userLogin = service.Get( (int)e.RowKeyValue ); if ( userLogin != null ) { string errorMessage; if ( !service.CanDelete( userLogin, out errorMessage ) ) { maGridWarning.Show( errorMessage, ModalAlertType.Information ); return; } service.Delete( userLogin, CurrentPersonId ); service.Save( userLogin, CurrentPersonId ); } } BindGrid(); }
/// <summary> /// Execute method to write transaction to the database. /// </summary> public void Execute() { using ( var rockContext = new RockContext() ) { var userLoginService = new UserLoginService( rockContext ); var user = userLoginService.Get( UserId ); if ( user != null ) { user.LastActivityDateTime = LastActivityDate; user.IsOnLine = IsOnLine; rockContext.SaveChanges(); } } }
/// <summary> /// Handles the SaveClick event of the dlgDetails control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param> protected void dlgDetails_SaveClick( object sender, EventArgs e ) { if ( _canEdit ) { var rockContext = new RockContext(); UserLogin userLogin = null; var service = new UserLoginService( rockContext ); int userLoginId = int.Parse( hfIdValue.Value ); if ( userLoginId != 0 ) { userLogin = service.Get( userLoginId ); } if ( userLogin == null ) { userLogin = new UserLogin(); if ( _personId.HasValue ) { userLogin.PersonId = _personId; } else { nbErrorMessage.Title = "Invalid Situation"; nbErrorMessage.Text = "The person you are editing has no person Id."; nbErrorMessage.Visible = true; return; } if ( service.GetByUserName( tbUserName.Text.Trim() ) != null ) { nbErrorMessage.Title = "Invalid User Name"; nbErrorMessage.Text = "The User Name you selected already exists. Please select a different User Name."; nbErrorMessage.Visible = true; return; } service.Add( userLogin ); } userLogin.UserName = tbUserName.Text.Trim(); userLogin.IsConfirmed = cbIsConfirmed.Checked; userLogin.IsLockedOut = cbIsLockedOut.Checked; var entityType = EntityTypeCache.Read( compProvider.SelectedValue.AsGuid() ); if ( entityType != null ) { userLogin.EntityTypeId = entityType.Id; if ( !string.IsNullOrWhiteSpace( tbPassword.Text ) ) { var component = AuthenticationContainer.GetComponent( entityType.Name ); if ( component != null && component.ServiceType == AuthenticationServiceType.Internal ) { if ( tbPassword.Text == tbPasswordConfirm.Text ) { if ( UserLoginService.IsPasswordValid( tbPassword.Text ) ) { userLogin.Password = component.EncodePassword( userLogin, tbPassword.Text ); userLogin.LastPasswordChangedDateTime = RockDateTime.Now; } else { nbErrorMessage.Title = "Invalid Password"; nbErrorMessage.Text = UserLoginService.FriendlyPasswordRules(); nbErrorMessage.Visible = true; return; } } else { nbErrorMessage.Title = "Invalid Password"; nbErrorMessage.Text = "Password and Confirmation do not match."; nbErrorMessage.Visible = true; return; } } } } if ( !userLogin.IsValid ) { // Controls will render the error messages return; } rockContext.SaveChanges(); HideDialog(); BindGrid(); } }
/// <summary> /// Handles the Delete event of the gUserLogins control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="RowEventArgs" /> instance containing the event data.</param> protected void gUserLogins_Delete( object sender, RowEventArgs e ) { if ( _canEdit ) { var rockContext = new RockContext(); var service = new UserLoginService( rockContext ); var userLogin = service.Get( e.RowKeyId ); if ( userLogin != null ) { string errorMessage; if ( !service.CanDelete( userLogin, out errorMessage ) ) { maGridWarning.Show( errorMessage, ModalAlertType.Information ); return; } service.Delete( userLogin ); rockContext.SaveChanges(); } } BindGrid(); }
/// <summary> /// Handles the End event of the Session control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param> protected void Session_End( object sender, EventArgs e ) { try { // mark user offline if ( this.Session["RockUserId"] != null ) { var rockContext = new RockContext(); var userLoginService = new UserLoginService( rockContext ); var user = userLoginService.Get( Int32.Parse( this.Session["RockUserId"].ToString() ) ); user.IsOnLine = false; rockContext.SaveChanges(); } } catch ( Exception ex ) { Error66( ex ); } }
/// <summary> /// Execute method to write transaction to the database. /// </summary> public void Execute() { using ( var rockContext = new RockContext() ) { var userLoginService = new UserLoginService( rockContext ); var user = userLoginService.Get( UserId ); if ( user != null ) { user.LastActivityDateTime = LastActivityDate; user.IsOnLine = IsOnLine; // check if this session had a previous account on-line if ( IsOnLine && SessionUserId.HasValue && SessionUserId != user.Id ) { // mark old session offline var oldUser = userLoginService.Get( SessionUserId.Value ); oldUser.IsOnLine = false; } rockContext.SaveChanges(); } } }
/// <summary> /// Handles the SaveClick event of the dlgDetails control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param> protected void dlgDetails_SaveClick( object sender, EventArgs e ) { if ( _canEdit ) { var rockContext = new RockContext(); UserLogin userLogin = null; var service = new UserLoginService( rockContext ); string newUserName = tbUserName.Text.Trim(); int userLoginId = int.Parse( hfIdValue.Value ); if ( userLoginId != 0 ) { userLogin = service.Get( userLoginId ); } // Check to see if there is a change to the username, and if so check that the new username does not exist. if ( userLogin == null || ( userLogin.UserName != newUserName ) ) { if ( service.GetByUserName( newUserName ) != null ) { // keep looking until we find the next available one int numericSuffix = 1; string nextAvailableUserName = newUserName + numericSuffix.ToString(); while ( service.GetByUserName( nextAvailableUserName ) != null ) { numericSuffix++; nextAvailableUserName = newUserName + numericSuffix.ToString(); } nbErrorMessage.NotificationBoxType = NotificationBoxType.Warning; nbErrorMessage.Title = "Invalid User Name"; nbErrorMessage.Text = "The User Name you selected already exists. Next available username: "******"Invalid Situation"; nbErrorMessage.Text = "No person selected, or the person you are editing has no person Id."; nbErrorMessage.Visible = true; return; } service.Add( userLogin ); } userLogin.UserName = newUserName; userLogin.IsConfirmed = cbIsConfirmed.Checked; userLogin.IsLockedOut = cbIsLockedOut.Checked; userLogin.IsPasswordChangeRequired = cbIsRequirePasswordChange.Checked; var entityType = EntityTypeCache.Read( compProvider.SelectedValue.AsGuid() ); if ( entityType != null ) { userLogin.EntityTypeId = entityType.Id; if ( !string.IsNullOrWhiteSpace( tbPassword.Text ) ) { var component = AuthenticationContainer.GetComponent( entityType.Name ); if ( component != null && component.ServiceType == AuthenticationServiceType.Internal ) { if ( tbPassword.Text == tbPasswordConfirm.Text ) { if ( UserLoginService.IsPasswordValid( tbPassword.Text ) ) { userLogin.Password = component.EncodePassword( userLogin, tbPassword.Text ); userLogin.LastPasswordChangedDateTime = RockDateTime.Now; } else { nbErrorMessage.NotificationBoxType = NotificationBoxType.Danger; nbErrorMessage.Title = "Invalid Password"; nbErrorMessage.Text = UserLoginService.FriendlyPasswordRules(); nbErrorMessage.Visible = true; return; } } else { nbErrorMessage.NotificationBoxType = NotificationBoxType.Danger; nbErrorMessage.Title = "Invalid Password"; nbErrorMessage.Text = "Password and Confirmation do not match."; nbErrorMessage.Visible = true; return; } } } } if ( !userLogin.IsValid ) { // Controls will render the error messages return; } rockContext.SaveChanges(); HideDialog(); BindGrid(); } }