On a recent project, we had a need to find an easier way for system admins to manage which permission sets were assigned to which user, especially when initially creating the user.
Here's what we came up with. A multi-select picklist on the 'User' object, with a picklist value corresponding to each permission set in your org. Adding values to this picklist will assign the corresponding permission to the user and vice versa.
We have created an unmanaged package which you can install directly into your Salesforce org. by accessing this link. Additionally, you can pull the source code directly GitHub and deploy it manually.
Post Installation Steps
There are a few steps you need to carry out after installation. These are:
1. Configure the picklist values to match the permission sets in your Salesforce org.
Replace the packaged 'PermissionSetx.Name' picklist values with the names of your own permission sets.
2. Configure 'Field Level Security' on the new field
Give edit access to the field to whichever profiles need to use this functionality.
3. Add the new field to your 'User' page layout
Drag the new field onto the 'User' page layout so that it appears on the view & edit pages.
That's it! Your permission set assignments can now be driven by the new picklist field on your User record.