Obsolete:Unsolved problems in roles: Difference between revisions
Line 4: | Line 4: | ||
==Guest access== | ==Guest access== | ||
Originally we used require_login() and isguest() combination. require_login() to be discussed later. | Originally we used require_login() and isguest() combination. require_login() to be discussed later. We are moving to capability checks only and stopping special checks in modules. We can not assign guest user to Guest role manually now - guest user is assigned to Guest role automatically at the site level. | ||
===Solution=== | ===Solution=== | ||
Line 10: | Line 10: | ||
* fix upgrade to assign guest role if needed | * fix upgrade to assign guest role if needed | ||
* fix course config GUI | * fix course config GUI | ||
* | |||
==Access without login== | ==Access without login== |
Revision as of 09:18, 27 August 2006
Yesterday I wanted to start full conversion of modules to new roles, mainly remove isteacher(), isguest(), iseditingteacher() and isstudent(). I stopped sooner than expected. Here is the list of problems we should solve before going ahead with roles conversion.
Guest access
Originally we used require_login() and isguest() combination. require_login() to be discussed later. We are moving to capability checks only and stopping special checks in modules. We can not assign guest user to Guest role manually now - guest user is assigned to Guest role automatically at the site level.
Solution
- allow assignment of guest user to at least Guest role
- fix upgrade to assign guest role if needed
- fix course config GUI
Access without login
Till now we used empty($USER->id) or isloggedin(). If we want to control everything using capabilities we need new notlogged user and Not logged role plus legacy capability site/legacy:loggedin.
We should also eliminate $CFG->forcelogin that was used when we wanted to give access without login to resources at site level.
Solution
- automatically create user notlogged - either in memory only or in database
- load notlogged user in $USER if not logged
- do some automatic assignment or capability overrides in upgrade
- remove empty($USER->id) from core
- rewrite require_login() or obsolete it by has_capability() with parameter to login if needed.
- add special handling of moodle/legacy:guest to has_capability() to keep its negative meaning for legacy code