Redmine definitely needs a better access control (ACL) for example to allow hosting open source and proprietary projects on the same installation. The best manifestation of this problem are Non members and Anonymous roles which are defined globally for all projects.
This problem gets resolved with the Role Shift plugin. This plugin allows you to manage roles at the project level: you can now define a shift for any role (including Anonymous and Non members).
Author: Andriy Lesyuk
0.1.0b with support of Redmine 2.x
This is a maintenance release, which just adds support for Redmine 1.4.x, 2.0.x, 2.1.x and 2.2.x.
Hack goes public
Did you ever want to restrict access to some projects maintaining role names?.. I.e. not by creating special roles like "<Project name> developer"?.. I did!