CASA On Rails
This application is a simple, easy-to-use app store that presents an storefront for finding and selecting apps, implements the Community App Sharing Architecture protocol, provides a mobile app dashboard using Web Storage, and supports integration with learning management systems through LTI Content-Item.
This application is under development and not intended for production use at this time.
CASA
Protocol
The Community App Sharing Architecture (CASA) provides a mechanism for discovering and sharing metadata about web resources such as websites, mobile apps and LTI tools. It models real-world decision-making through extensible attributes, filter and transform operations, flexible peering relationships, etc.
Integration
From the storefront, several different mechanisms are available:
- Launch the application directly
- Reply to an LTI Consumer with the ContentItemSelectionResponse message
- Add to Web Storage and present as a mobile dashboard
Additionally, CASA endpoints are exposed for:
- Local outlets via the CASA Local module
- Adjacent peers via the CASA Publisher module
Application
This application provides the following:
- A basic app store with apps and categories
- Browse categories and search by string for list of apps
- View details about and launch an app
- App submission by authenticated users
- Administer apps, categories, inbound peers and users
- Publish apps to outbound peers
- Receive apps from inbound peers with translation and squashing
- Relay apps received from inbound peers to outbound peers
- Provide apps to local outlets
- Provide apps via LTI ContentItemSelectionResponse message
- Provide apps via a mobile dashboard back by Web Storage
Additional features are planned:
- Filter and transform apps received from inbound peers and before sharing with outbound peers
- Mapping of inbound categories and tags to local categories
- Definition of authorization requirements for local outlets and outbound adjacent peers
- Journaling of changes to propagating apps
References
This application is a reduced and opinionated implementation of CASA. For a more overarching (but also more complex and challenging) implementation, the CASA reference implementation may be useful. A series of gems were developed during the process of building this reference implementation, and they may be useful in some contexts as well.
Setup
System Dependencies
- Ruby 2.1+
- Node.js 0.10+
- Java 1.6+
- MySQL 5.0+, PostgreSQL 8.4+ and SQLite 3.6.16+ *
- ElasticSearch 1.0+
*To use a database besides MySQL, update Gemfile
accordingly
Manged Dependencies
For Ruby packages:
bundle
For Node packages:
npm install
Build Web Assets
To build web assets:
bundle exec blocks build
Configure Rails App
See:
config/database.yml
to set the database configurationconfig/environments/*.rb
to set theconfig.casa
andconfig.store
variables
Setup Database
bundle exec bin/rake db:migrate
bundle exec bin/rake db:seed
Configuration
Basic
Set your CASA engine UUID and user contact information in your environment configuration file, such as:
Rails.application.configure do
# ..
# Community App Sharing Architecture configuration
config.casa = {
:engine => {
:uuid => 'dd8c99e2-fe5b-4911-a815-73c17b46d3fc'
}
}
# Local configuration
config.store = {
:user_contact => { :name => 'John Doe', :email => 'admin@example.edu' }
}
# ..
end
Shibboleth Login via OAuth2 Bridge
This application supports Shibboleth login via the Shibboleth-OAuth2 Bridge by Eric Bollens.
Once the bridge is installed on your web server, add the following to your environment configuration:
Rails.application.configure do
# ..
config.oauth2 = {
:provider => {
:shibboleth => {
:enabled => true,
:key => 'demo',
:secret => 'secret',
:properties => {
:site => 'http://auth.example.edu',
:authorize_url => '/oauth2/authorize',
:token_url => '/oauth2/access_token'
},
:routes => {
:get_user => '/oauth2/user'
},
:restrict_to => {
:eduPersonPrincipalName => [
# users by eduPersonPrincipalName that are allowed to submit apps
],
:eduPersonScopedAffiliation => [
# eduPersonScopedAffiliations that are allowed to submit apps
'employee@ucla.edu'
]
}
}
}
}
config.login_route = [:session_oauth2_launch_url, :shibboleth]
# ..
end
This configuration makes it possible for users with the employee@ucla.edu
eduPersonAffiliation to log in and submit applications for review.
Usage
CASA on Rails is a standard Rails server. Once you ensure that the database and Elasticsearch are running, start it as you'd usually start a Rails server.
License
CASA On Rails is open-source and licensed under the AFFERO GENERAL PUBLIC LICENSE. The full text of the license may be found in the LICENSE
file.