Sounds like an odd hack that the person has to 'kill' themselves.
Like you said, sounds as though thier access is being loaded after this script.
Any errors being returned in console?
Two suggestions... use a timer to count 2 seconds before testing access?
Or, hook eventPlayerActive instead? This is called after connecting of course, might give the necessary time needed. (Then again, might be too slow)
The project I'm working on had odd results using the HookEvent(eventPlayerActive) command, which calls a function that was supposed to declare some key tables and switches for those tables related to the user. Doesn't seem to call it
So what I've done is wrote the code so that when the console command to turn on my project is turned 'on', it tests to see if those variables are set, if not, it too calls the original 'setup' function, then returns to turn on the project.
So far, its worked, and better than having to have my user reconnect or respawn.