# ingang This is a piece of middleware intended to help manage invites for [Helios](https://heliosvoting.org/), the two systems we use in tandem for holding meetings where members can vote. Its web interface is hosted at [https://vergadering.bij1.org/ingang/rooms/](https://vergadering.bij1.org/ingang/rooms/). ## requirements - [Ruby](https://www.ruby-lang.org/) - [Rake](https://ruby.github.io/rake/) - [Bundler](https://bundler.io/) ## dependencies - [rvm](https://rvm.io/) ## usage ```bash # install ruby version specified in Gemfile rvm use "ruby-2.7.5" # create a wrapper for this ruby PUMA=`gem wrappers show pumactl` cp config/application.yml.bck config/application.yml.bck # edit the above file to enter proper values ./bin/bundle config set --local path 'vendor' ./bin/bundle update ./bin/bundle install ./bin/bundle binstubs --all ./bin/rails app:update:bin ./bin/rails credentials:edit # either restore existing data cp old/config/master.key ./config/master.key cp old/db/production.sqlite3 ./db/production.sqlite3 # or scaffold database ./bin/rails db:migrate # RAILS_ENV=test # handle static assets sudo apt-get update && sudo apt-get install yarn RAILS_ENV=production ./bin/rails assets:precompile ./bin/rails webpacker:install # run tests ./bin/rake test # create service sudo bash -c "cat > /etc/systemd/system/ingang.service" << EOF [Unit] Description=Ingang [Service] Type=simple RemainAfterExit=yes Restart=on-failure TimeoutSec=300 User=$USER WorkingDirectory=$PWD PIDFile=$PWD/tmp/pids/server.pid ExecStart=$PUMA -F $PWD/config/puma.rb start ExecStop=$PUMA -F $PWD/config/puma.rb stop ExecReload=$PUMA -F $PWD/config/puma.rb phased-restart [Install] WantedBy=multi-user.target EOF # start and check service sudo systemctl daemon-reload sudo systemctl stop ingang sudo systemctl disable ingang sudo systemctl enable ingang sudo systemctl start ingang systemctl status ingang journalctl -u ingang ``` ## handleiding - [log in](https://vergadering.bij1.org/ingang/rooms/) - maak een `New room` - laad deelnemers in via `Users` -> `Bulk import` - doe `Export Voters for Helios` en [laad in Helios stemmingen in](https://bij1.org/handleiding-stemsysteem/#stemgerechtigden-inladen) - ofwel: - in Helios stuur per stemming een invite - Ingang in (stemmingen): `Import Votes` (vergt SSH toegang tot Helios server) en verspreid stemportaal links via ofwel: 1. `Export Voters for Mailing` doen en via externe mailing dienst sturen * NB: volgorde blijft hierbij niet intact 1. via Ingang sturen door: - bij `/rooms` -> `Edit` tweak de [mail text](https://cloud.bij1.org/s/4kT8KZRqGWWqerw) - test via `Users` -> `Send test invite` - als deze goed is `Send Invitations` naar de rest - open stemmingen in Helios - wacht tot mensen via hun in de mail gelinkte persoonlijke stem-portaal de vergadering in komen en stemmen ### late aanmeldingen stappen in [Ingang](https://code.bij1.org/bij1/ingang), voor een `$ROOM` en `$ELECTION`: kies in de user index van een kamer (url `https://vergadering.bij1.org/ingang/rooms/$ROOM/users`, b.v. `https://vergadering.bij1.org/ingang/rooms/123/users`): - Ingang in: kies in de user index van een kamer knop `Bulk import` (url `https://vergadering.bij1.org/ingang/rooms/$ROOM/users/new`, b.v. `https://vergadering.bij1.org/ingang/rooms/123/users/new`) - Ingang uit: kies in de user index van een kamer knop `Export Voters for Helios` (url `https://vergadering.bij1.org/ingang/rooms/$ROOM/voters.csv`, b.v. `https://vergadering.bij1.org/ingang/rooms/123/voters.csv`) - [Helios](https://stemmen.bij1.org/) in: bij een vergadering op `voters & ballots` (url: `https://stemmen.bij1.org/helios/elections/$ELECTION/voters/upload`, b.v. `https://stemmen.bij1.org/helios/elections/12345678-1234-1234-1234-1234567890ab/voters/upload`) - stuur mail via Ingang - ofwel: - Ingang in (stemmingen): `https://vergadering.bij1.org/ingang/rooms/$ROOM/votes/bulk` (vergt SSH toegang tot Helios server) - in Helios stuur per stemming een invite ## todo - CI - un-hardcode - `app/views/main/stream.html.erb`: video/chat urls ## documentation checklist This README would normally document whatever steps are necessary to get the application up and running. Things you may want to cover: - Ruby version - System dependencies - Configuration - Database creation - Database initialization - How to run the test suite - Services (job queues, cache servers, search engines, etc.) - Deployment instructions - ...