<p>Currently "User" are the different log-in's on an OS. Users should be the commotion log-ins under each log-in. This will allow for shared computers to have different user settings. </p>

<p>The example below shows four "users" (1,2,3,4). Each user can have custom settings and extensions. User's 1 & 2 can only access their account when logged in to the computer as "Operating System User A." Also, users 1 & 2 </p>

<p>EG:</p>

<ul>
<li>Operating System User A

<ul>
<li>Commotion Login 1</li>
<li>Commotion Login 2</li>
</ul>
</li>
<li>Operating System User B

<ul>
<li>Commotion Login 3</li>
<li>Commotion Login 4</li>
</ul>
</li>
</ul><p>The "settings" values in utile/extension_manager.py will be impacted by this.</p>

<p><strong>Possible Solution:</strong><br>
1) Save all user specific settings with a proper <a href="http://pyqt.sourceforge.net/Docs/PyQt4/qsettings.html#Scope-enum">User Scope</a> to ensure proper "OS User Scope" and then create a settings section that uses the currently logged in user as a key to check for "Commotion user" specific settings.</p>

<p>2) Use the "User Scope" from 1, but also have all settings saved using python-gpg and the users key. As such, each login is connected to a gpg-encrypted .ini file. Upon creation of a new user a gpg key is created using the users password. Upon login, when the user enters their login and password the gpg-key file associated with that login is loaded using that password by the commotion_client. If the key is loaded, and the .ini file is decrypted then the login succeeds. If it does not, then the login fails. Upon closing the .ini file is re-encrypted using the key. This would have to be built in as a fail-safe to ensure that even upon a crash the users data is only decrypted when using the application. This way all authentication is done through the python-gpg library and not re-implemented through commotion. We would need to ensure that the gpg code we write is audited.</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br>Reply to this email directly or <a href='https://github.com/opentechinstitute/commotion-client/issues/18'>view it on GitHub</a>.<img src='https://github.com/notifications/beacon/3074564__eyJzY29wZSI6Ik5ld3NpZXM6QmVhY29uIiwiZXhwaXJlcyI6MTcxMTQ4OTE0MywiZGF0YSI6eyJpZCI6Mjg2MTUyOTF9fQ==--4582c341f9f58dc33c81b9f186e02bafc3f3838c.gif' height='1' width='1'></p>