I'm thinking through how these situations can be handled with FreePBX. Here is how it's handled in the Altigen world.
User with multiple phones:
Sales person has a phone at their desk, which is used to log into their extension. User leaves their desk, and takes their laptop with them. User sits in another room, opens MaxCommunicator with the IP Talk softphone enabled. Once that's done their extension is now logged in using the softphone, and automatically logged out of the desk phone.
Phones with multiple users:
This scenario is similar to the above. This sales person works from home and comes into the office once per week. They have an Altigen IP phone at home, and there is another IP phone at their workstation in the office. This workstation has multiple users -- depending on which work-from-home sales person is in the office that day.
When a sales person comes into the office, they go to the workstation, and use #27 to remove the currently logged in extension of the phone, and log into their extension (which logs them out of their phone at home). I encourage them to use #26 at the end of the day to log out of the at-work phone; however, when they return home and use #27 to log back into that phone, they will be logged out of their office phone.
Extension authentication
In the Altigen world (at least in my Altigen world with Max Server 8.0), extension and voice mail authentication is one in the same. When users do the #27 function, they enter their extension number and passcode. If they access voice mail, it uses the same passcode. The credentials are the same for if they log into MaxCommunicator, which, if the IP Talk selection isn't chosen at login, is call management software.
From what I've seen in FreePBX, the extension, voice mailbox, and user portal are three different sets of credentials. Mind you, I'm not saying this is a bad thing. I'm simply thinking through the paradigm shifts my users will need to complete when we leave the Altigen world.