You can have them sign up however you prefer, then in the user data type, add Approved and make that yes/no. I assume you have some page or information they can access after they are allowed in, so make that only accessible if the current user is approved.
If it’s a page they can access only after being approved, then use the workflow page is loaded. Set the when for this workflow to be something like and when Current user’s approved is no . Create an action within this workflow that redirects the user to a page they are allowed to be. This workflow will only run then if the current user hasn’t been approved yet.
You can use the method above to also create an admin page and protect it by adding Admin to the user data then do the same page is loaded workflow, but for users that you want to give admin access to.
Within the admin page, you can set up a repeating group that sources the data from the User dataset. It would look like Do a search for Users. Place a text element in the cell for their name and a button to approve them. Create a workflow for the approval button so when the an admin presses it, the user becomes approved. You will want to use the Make changes to thing action and set the Thing to change to be the current cell’s User. You will then want to add a field to change their approval status. Which would look something like approval = “yes”.
You can use :filtered on the repeating group’s source data and make only users that have been approved to not show up there.
Let me know how this works for you