[![Build Status](https://drone.kosmos.org/api/badges/kosmos/akkounts/status.svg)](https://drone.kosmos.org/kosmos/akkounts) # Akkounts This app allows Kosmos/LDAP users to manage their accounts, including credentials, invites, donations, etc.. ## Development ### Quick Start The easiest way to get a working development setup is using Docker Compose like so: 1. Make sure [Docker Compose is installed][1] and Docker is running (included in Docker Desktop) 2. Uncomment the `web` section in `docker-compose.yml` 3. Run `docker compose up` and wait until 389ds announces its successful start in the log output 4. `docker-compose exec ldap dsconf localhost backend create --suffix="dc=kosmos,dc=org" --be-name="dev"` 5. `docker compose run web rails ldap:setup` 6. `docker compose run web rails db:setup` After these steps, you should have a working Rails app with a handful of test users running on [http://localhost:3000](http://localhost:3000). Log in with username "admin" and password "admin is admin". All users listed on [http://localhost:3000/admin/ldap_users](http://localhost:3000/admin/ldap_users) have the password "user is user". ### Rails app Installing dependencies: bundle install yarn install Setting up local database (SQLite): bundle exec rails db:create bundle exec rails db:migrate Running the dev server and auto-building CSS files on change: bin/dev Running the background workers (requires Redis): bundle exec sidekiq -C config/sidekiq.yml Running all specs: bundle exec rspec ### Docker (Compose) There is a working Docker Compose config file, which allows you to spin up both an app server for Rails as well as a local 389ds (LDAP) server. By default, `docker-compose up` will only start the LDAP server, listening on port 389 on your machine. Uncomment other services in `docker-compose.yml` if you want to use them. #### LDAP server After creating the Docker container for the first time (or after deleting it), you need to run the following command once, in order to create the dirsrv back-end: docker-compose exec ldap dsconf localhost backend create --suffix="dc=kosmos,dc=org" --be-name="dev" Now you can seed the back-end with data using this Rails task: bundle exec rails ldap:setup The setup task will first delete any existing entries in the directory tree ("dc=kosmos,dc=org"), and then create our development entries. Note that all 389ds data is stored in `tmp/389ds`. So if you want to start over with a fresh installation, delete both that directory as well as the container. ## Documentation ### Rails * [Ruby on Rails](https://guides.rubyonrails.org/) * [Pagination](https://ddnexus.github.io/pagy/) ### Front-end * [Tailwind CSS](https://tailwindcss.com/) * [Sass](https://sass-lang.com/documentation) ### Testing * [RSpec](https://rspec.info/documentation/) * [Capybara](https://rubydoc.info/github/teamcapybara/capybara/master) ### LDAP / Auth * [devise_ldap_authenticatable](https://github.com/cschiewek/devise_ldap_authenticatable) * [net/ldap](https://www.rubydoc.info/gems/net-ldap/Net/LDAP) ### Asynchronous jobs/workers * [Sidekiq](https://github.com/mperham/sidekiq/wiki/) * [ActiveJob](https://github.com/mperham/sidekiq/wiki/Active-Job) ## License [GNU Affero General Public License v3.0](https://choosealicense.com/licenses/agpl-3.0/) [1]: https://docs.docker.com/compose/install/