/// <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 gAuthClients_Delete(object sender, RowEventArgs e) { bool canEdit = IsUserAuthorized(Authorization.EDIT); if (canEdit) { using (var rockContext = new RockContext()) { var authClientService = new AuthClientService(rockContext); var authScope = authClientService.Get(e.RowKeyId); if (authScope != null) { authClientService.Delete(authScope); rockContext.SaveChanges(); } } } BindGrid(); }
/// <summary> /// Saves the authentication client. /// </summary> /// <param name="authScopeId">The authentication scope identifier.</param> private void SaveAuthClient(int authScopeId) { var isNew = authScopeId.Equals(0); var authClient = new AuthClient(); var editAllowed = authClient.IsAuthorized(Authorization.EDIT, CurrentPerson); if (!editAllowed) { DisplayErrorMessage("The current user is not authorized to make changes."); return; } var rockContext = new RockContext(); var authClientService = new AuthClientService(rockContext); if (isNew) { authClientService.Add(authClient); } else { authClient = authClientService.Get(authScopeId); } if (authClient == null) { DisplayErrorMessage("The Auth Client with the specified Id was found."); return; } if (tbClientSecret.Text.IsNullOrWhiteSpace()) { DisplayErrorMessage("A Client Secret is required."); return; } authClient.Name = tbName.Text; authClient.IsActive = cbActive.Checked; authClient.ClientId = tbClientId.Text; authClient.RedirectUri = tbRedirectUri.Text; authClient.PostLogoutRedirectUri = tbPostLogoutRedirectUri.Text; if (tbClientSecret.Text != CLIENT_SECRET_PLACE_HOLDER) { var entityTypeName = EntityTypeCache.Get <Rock.Security.Authentication.Database>().Name; var databaseAuth = AuthenticationContainer.GetComponent(entityTypeName) as Rock.Security.Authentication.Database; var encryptedClientSecret = databaseAuth.EncryptString(tbClientSecret.Text); authClient.ClientSecretHash = encryptedClientSecret; } var activeClaims = GetActiveClaims(rockContext).Select(ac => ac.ScopeName).Distinct(); var selectedClaims = new List <string>(activeClaims.Count()); var selectedScopes = new List <string>(activeClaims.Count()); foreach (var scope in activeClaims) { var checkboxList = litClaims.FindControl(scope) as RockCheckBoxList; if (checkboxList == null) { continue; } var selectedScopeClaims = checkboxList.SelectedValues; selectedClaims.AddRange(selectedScopeClaims); if (selectedScopeClaims.Any()) { selectedScopes.Add(scope); } } authClient.AllowedClaims = selectedClaims.ToJson(); authClient.AllowedScopes = selectedScopes.ToJson(); rockContext.SaveChanges(); }