aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Add a selector for categories and sectionshellekin2020-10-091-0/+10
|
* Add permissionshellekin2020-10-092-1/+11
| | | | | - `current_agent` is now a full instance of Agent - provide helpers to verify current user roles
* Scope routes to Agenthellekin2020-10-098-23/+111
| | | | | | | Since an Agent is required for all records, we scope the routes and get it present for free ;) This commit also adds resource views.
* Add Classifications and Resource validationshellekin2020-10-0911-31/+147
| | | | | | | | | | | | | | | | - Turn `has_and_belongs_to_many` into `has_many :through`: now, resources and sections are related through Classifications. - Refactor usage of jsonb column to use ActiveRecord validations - Attention! store_accessor: NOTE: If you are using structured database data types (eg. PostgreSQL hstore/json, or MySQL 5.7+ json) there is no need for the serialization provided by .store. Simply use .store_accessor instead to generate the accessor methods. Be aware that these columns use a string keyed hash and do not allow access using a symbol. NOTE: The default validations with the exception of uniqueness will work. For example, if you want to check for uniqueness with hstore you will need to use a custom validation to handle it. https://api.rubyonrails.org/classes/ActiveRecord/Store.html
* Add categories, sections, and import datahellekin2020-10-088-1/+475
|
* Fix z-index for map and articlehellekin2020-10-082-1/+1
|
* Fix typohellekin2020-10-081-1/+1
|
* Merge branch 'map-style'hellekin2020-10-088-32/+177
|\
| * Make map more beautifulhellekin2020-10-088-32/+177
| | | | | | | | | | | | | | | | | | | | | | | | | | This commit introduces a few things: 1. New `content_for` hooks for :debug, :head, and :body_end so that views code remains consistent and clean 2. Fullscreen map! 3. Welcome#index view, the Rails way It also moves controller-related code to the controller, Enjoy!
* | Changed 'has_ony' to 'has_one'Nemael2020-10-081-1/+1
|/
* Merge branch 'taxonomies'hellekin2020-10-0810-1/+147
|\
| * Add model foundation for classificationshellekin2020-10-0810-1/+147
| | | | | | | | | | | | | | | | Taxonomy > Category > Section This commit adds models for it. https://doc.incommon.cc/#classifications
* | Removed the hand-picked markers because they caused errorsNemael2020-10-081-3/+3
| |
* | Map added but no dynamic points placed, the current points are hand-picked ↵Nemael2020-10-081-0/+48
|/ | | | from the data
* Attempt to a fix for the edit resource pageNemael2020-10-081-2/+2
|
* Added leaflet gem and changed a bit the Edit Ressource page to be able to ↵Nemael2020-10-082-4/+10
| | | | edit categories
* Fix form, add flashhellekin2020-10-065-3/+88
|
* First pass at Resources...hellekin2020-10-064-4/+19
|
* First pass at listing Resourceshellekin2020-10-064-2/+77
| | | | | | This implements resource listing and pagination. See /resources
* Facilitate development with puma in the browserhellekin2020-10-061-30/+26
| | | | | A single worker in development enables in-context debug in the error console in the browser.
* User Kaminari gem for paginationhellekin2020-10-063-0/+29
| | | | | | | | | Since we're dealing with lots of resources, we need a way to handle pagination. This gem seems to be the new kid on the block and doing things right, including pagination by default an I18n support. Let's see. Kaminari: https://github.com/kaminari/kaminari
* Add a favicon so we can find the tab :)hellekin2020-10-061-0/+0
|
* Document importation of resourceshellekin2020-10-062-10/+32
| | | | | | | | | | Renamed `readme.txt` to `README.md` to stick to standard README case and take advantage of Markdown formatting supported by code hosting services. Also fixed names in the content. And added import method to the database.
* Fix resources migrationhellekin2020-10-062-1/+4
| | | | | | | t.references already creates an index, so the second index actually broke things. You may need to rebuild the database!
* Update parser fieldshellekin2020-10-061-3/+3
| | | | | | | | mail -> email since it's unambiguous Also changed 'Concertes' source to 'ConcertES' since it is the group name on IN COMMON and the name of the Agent, to facilitate data import.
* Ignore generated Locations.geojsonhellekin2020-10-061-0/+3
|
* Add Resource modelhellekin2020-10-066-1/+34
| | | | | | Resources will be stored as JSON, in the (GeoJSON) :feature column. They are assigned an UUID upon creation if they don't comme with one. They belong to an Agent.
* Populate database with Agents: rails db:seedhellekin2020-10-061-0/+11
|
* Improved the parser file and added some more comments, created a readme.txt ↵Nemael2020-10-062-0/+99
| | | | file to explain LocationsParser.rb
* Files to parse with parser.rb to create the Locations.geojson file which ↵Nemael2020-10-0614-0/+248990
| | | | contains all the locations from the Dewey and Concertes data
* Production environment with systemd and chruby requires this...hellekin2020-10-061-0/+3
|
* Add better integration with systemdhellekin2020-10-063-0/+8
|
* Refactor authentication method to make it a bit more readablehellekin2020-10-061-35/+67
|
* Remove broken codehellekin2020-10-061-6/+0
|
* Ensure SSO return host is correct in productionhellekin2020-10-061-1/+1
|
* [deploy] Restore ActionMailer since it breaks during deploy...hellekin2020-10-061-3/+3
|
* Add code for deploymenthellekin2020-10-062-5/+28
|
* Fix URLhellekin2020-10-061-1/+1
|
* [SECURITY] Update Ruby to v2.6.6 (take two)hellekin2020-10-062-2/+2
|
* [SECURITY] Update Ruby to v2.6.6hellekin2020-10-061-1/+1
| | | | | | | CVE-2020-10663: Unsafe Object Creation Vulnerability in JSON (Additional fix) CVE-2020-10933: Heap exposure vulnerability in the socket library https://www.ruby-lang.org/en/news/2020/03/31/ruby-2-6-6-released/
* First pass at something visiblehellekin2020-10-0623-14/+347
| | | | This is a first version of the application, to go beyond simple authentication.
* Extract Role check to a background jobhellekin2020-10-062-9/+57
| | | | | | | When using SSO, the Discourse sends a list of the user groups. We take the opportunity to update Agency information for the user. This is performed as a background job, as it involves networked requests to the Discourse, e.g., to verify group ownership...
* Add instance methodshellekin2020-10-061-0/+10
| | | | | | | The Agency class can `grant` and `revoke` roles for a given Agent and User. Since it is primarily used in context of both an Agent and User, we add convenience methods so that one can grant or revoke a role simply by passing the desired role to the instance.
* Add Talk API Keyshellekin2020-10-061-1/+1
| | | | | | Rails.application.credentials.talk_api_key is the key for user interaction Rails.application.credentials.talk_api_admin is the username to use for administration Rails.application.credentials.talk_api_admin_key is the admin API key
* Ensure only one Agent exists for a given grouphellekin2020-10-061-0/+1
|
* Use Discourse API gemhellekin2020-10-062-0/+12
| | | | | | We use the DiscourseApi::Client to interact with https://talk.incommon.cc discourse_api: https://meta.discourse.org/t/using-the-discourse-api-ruby-gem/17587
* Add Authentication logichellekin2020-10-058-1/+133
| | | | | | | | | | | The ApplicationController provides a `current_user` method (and helper) to access the authenticated user (if any). The WelcomeController provides minimal logic to authenticate against DiscourseSSO. Current state is that one can login and logout. Views need a lot of work.
* Add Agent and Agency modelshellekin2020-10-055-1/+83
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since IN COMMON is about collective management of data we're using the concept of Agent to describe a group of users acting together. In ActivityPub terms, Agent will be the Actor when manipulating data, so that any individual User (or application) member of this Agent will be able to manipulate data on behalf of this Agent. Therefore a User has many Agencies, and an Agent as well: the Agency model allows not only to create a joint table between Agents and Users, but also to manage User roles within the related Agent. Roles are defined as: - observer: one who can read and review or flag data - editor: one who create or edit data - maintainer: one who can edit data and manage maps - leader: one who can manage roles A User may have zero or more roles in an Agent. A User without a Agency record for a specific Agent will only be able to 'observe' public data from this Agent. (Note that this is not currently specified, but matches existing reflection on Agents) https://doc.incommon.cc/#agents
* Configure Discourse SSOhellekin2020-10-057-1/+37
| | | | | | | | We're creating a minimal User model that will be filled from SSO. We also configure Inflections so we can use SSO instead of Sso which looks weird for a module named after an acronym. Use Discourse as SSO: https://meta.discourse.org/t/using-discourse-as-a-sso-provider/32974
* Use pry and bitfieldshellekin2020-10-052-0/+16
| | | | | | | | | | | | | Pry is a great console enhancement for development. You can navigate through code and object with `cd` and `ls`, or use `show-method foo` to see how it's written... Bitfields allow to store multiple flags in an efficient integer. It will be used to keep track of a User's roles within an Agent. Pry: https://pry.github.io/ Pry-Rails: https://github.com/rweng/pry-rails Bitfields: https://github.com/grosser/bitfields