Vanilla 1 is no longer supported or maintained. If you need a copy, you can get it here.
HackerOne users: Testing against this community violates our program's Terms of Service and will result in your bounty being denied.
Looking for collaborators for a Rails integration add-on.
Hi,
I'm a Rails programmer, and I'm working on project to make it really easy to integrate apps like Vanilla into existing Rails applications. I'm not too familiar with the internals of Vanilla, so it'd be great if there's someone out there that would also like this kind of project to happen.
Here's the project page: http://greenfabric.com/page/integration_api_home_page
Here's a quote from the readme file:
The basic idea
--------------
The key idea is to add a web services API into the existing Rails
application, which allows one or more 3rd party apps to get the
information they need, when they need it. The API should be
configurable enough and general enough so that it can be added to any
Rails app without modification. The Rails app stays in control of all
sign-in and sign-out functions.
A 3rd party app, such as Vanilla, is installed in a subdirectory of
the Rails app on the same host. If that is difficult to do, it can be
installed running on a different port. These configurations will
allow it to access the Rails cookie.
The Rails app will need no custom work. The third-party apps will
need a small amount of programming. The following steps are performed
in PHP, Rails, or whatever development environment in which the
3rd-party app runs:
* Customize the sign-in and sign-out links to point to those in your
Rails app.
* Customize the function that checks if a user is signed in to do the
following:
1. Get the Rails cookie name via the API.
2. Check for the existence of the cookie in the browser. Not there
=> not logged in. If there, continue...
3. Get the cookie data and send it to the API, which returns
the user info. Empty data => not logged in. If there's
user data, continue...
4. Create a new [Vanilla/Wordpress/etc.] user record if none exists
yet.
5. Allow the [Vanilla/Wordpress/etc.] sign-in function to succeed,
marking the user as signed in.
0
This discussion has been closed.
Comments
Check the Context class (library/Framework/Framework.Class.Context.php). It is this class that start the authentication and the session. The Authenticator class is the class that authenticate the user.
You will have to write your own Authenticator class:
# extensions/RorBridge/library/People/People.Class.RorBridgeAuthenticator.php include_once $Context->Configuration['LIBRARY_PATH'] . '/People/People.Class.Authenticator.php'; class RorBridgeAuthenticator extends Authenticator { ... }
To make Vanilla use your authenticator:
# extensions/RorBridge/default.php if (empty($Configuration['RORBRIDGE_VERSION'])) { AddConfigurationSetting($Context, 'AUTHENTICATION_CLASS', 'RorBridgeAuthenticator'); AddConfigurationSetting($Context, 'LIBRARY_INCLUDE_PATH', $Configuration['LIBRARY_INCLUDE_PATH'] + ';%EXTENSIONS%/RorBridge/library/'); AddConfigurationSetting($Context, 'RORBRIDGE_VERSION', '0.1.0'); }
If you need to extends the UserManager and Session class:
# extensions/RorBridge/library/People/People.Class.RorBridgeUserManager.php include_once $Context->Configuration['LIBRARY_PATH'] . '/People/People.Class.UserManager.php'; class RorBridgeUserManager extends UserManager{ ... } # extensions/RorBridge/library/People/People.Class.RorBridgeSession.php include_once $Context->Configuration['LIBRARY_PATH'] . '/People/People.Class.Session.php'; class RorBridgeSession extends PeopleSession{ ... } # extensions/RorBridge/default.php if (empty($Configuration['RORBRIDGE_VERSION'])) { AddConfigurationSetting($Context, 'AUTHENTICATION_CLASS', 'RorBridgeAuthenticator'); AddConfigurationSetting($Context, 'OBJECT_FACTORY_REFERENCE_USER_MANAGER', 'RorBridgeUserManager'); AddConfigurationSetting($Context, 'OBJECT_FACTORY_REFERENCE_PEOPLE_SESSION', 'RorBridgeSession'); AddConfigurationSetting($Context, 'LIBRARY_INCLUDE_PATH', $Configuration['LIBRARY_INCLUDE_PATH'] + ';%EXTENSIONS%/RorBridge/library/'); AddConfigurationSetting($Context, 'RORBRIDGE_VERSION', '0.1.0'); }