{"id":19806529,"url":"https://github.com/monade/cognito_rails","last_synced_at":"2025-11-11T19:30:21.269Z","repository":{"id":83403792,"uuid":"476740943","full_name":"monade/cognito_rails","owner":"monade","description":"Add Cognito authentication to your Rails API","archived":false,"fork":false,"pushed_at":"2025-01-20T15:22:02.000Z","size":61,"stargazers_count":5,"open_issues_count":1,"forks_count":2,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-04-25T13:04:13.343Z","etag":null,"topics":["aws-cognito","cognito","rails","rails-api","rails-authentication","ruby"],"latest_commit_sha":null,"homepage":"https://monade.io/en/home-en/","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/monade.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2022-04-01T13:54:23.000Z","updated_at":"2025-01-20T15:15:13.000Z","dependencies_parsed_at":"2024-04-16T10:41:04.882Z","dependency_job_id":"a738b99e-138c-45f8-8af0-6fb45b7246eb","html_url":"https://github.com/monade/cognito_rails","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monade%2Fcognito_rails","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monade%2Fcognito_rails/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monade%2Fcognito_rails/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monade%2Fcognito_rails/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/monade","download_url":"https://codeload.github.com/monade/cognito_rails/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251840140,"owners_count":21652287,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws-cognito","cognito","rails","rails-api","rails-authentication","ruby"],"created_at":"2024-11-12T09:07:49.194Z","updated_at":"2025-11-11T19:30:21.225Z","avatar_url":"https://github.com/monade.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Tests](https://github.com/monade/cognito_rails/actions/workflows/test.yml/badge.svg)\n[![Gem Version](https://badge.fury.io/rb/cognito_rails.svg)](https://badge.fury.io/rb/cognito_rails)\n\n# cognito_rails\n\nA gem to integrate AWS Cognito in your Rails app\n\n## Installation\n\nAdd the gem to your Gemfile\n\n```ruby\n  gem 'cognito_rails'\n```\n\nAdd an initializer for the configuration\n\n```ruby\ncognito_credentials = if Rails.env.production?\n                        Rails.application.credentials\u0026.dig(:cognito, :production)\n                      else\n                        Rails.application.credentials\u0026.dig(:cognito, :staging)\n                      end\n\nCognitoRails::Config.aws_client_credentials = {\n  access_key_id: cognito_credentials\u0026.dig(:access_key_id),\n  secret_access_key: cognito_credentials\u0026.dig(:secret_access_key),\n}\n\nCognitoRails::Config.aws_region = cognito_credentials\u0026.dig(:region)\nCognitoRails::Config.aws_user_pool_id = cognito_credentials\u0026.dig(:user_pool_id)\nCognitoRails::Config.default_user_class = 'User'\n# Optional\nCognitoRails::Config.logger = Rails.logger # To receive logs\nCognitoRails::Config.cache_adapter = Rails.cache # To cache the JWT keys API call\nCognitoRails::Config.skip_model_hooks = Rails.env.test? # To skip cognito user creation during tests\n```\n\n## Controller\n\nAdd the ControllerConcern to your ApplicationController:\n\n```ruby\nclass ApplicationController \u003c ActionController::Base\n  cognito_authentication user_class: 'User'\nend\n```\n\nThis makes the logged user available to your controllers through the current_user attribute.\n\n### Model\n\nAdd `as_cognito_user` to your user models along with the mixin methods you need:\n\n```ruby\nclass User \u003c ApplicationRecord\n  validates :email, :phone, :role, presence: true\n  validates :email, :phone, uniqueness: true\n\n  as_cognito_user\n  cognito_verify_email\n  cognito_verify_phone\n  cognito_password_policy :temporary\n  define_cognito_attribute 'role', :role\n  define_cognito_attribute 'test', 'some fixed value'\n\n  has_many :projects, dependent: :restrict_with_error\n\n  enum role: { user: 0, agency: 500, admin: 1000, superadmin: 9999 }\nend\n```\n\n`:email` and `:phone` are automatically saved as Cognito attributes from the model.\n`cognito_verify_email` and `cognito_verify_phone` add email and phone verification on user creation.\n`cognito_password_policy` chose the password policy on user creation (:temporary, :user_provided), the default is :temporary\n`define_cognito_attribute` assign a custom Cognito attribute to the user. **This won't work if you don't add the custom attribute through the Cognito console in advance**\n\n## License\n\nThe gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).\n\n## About Monade\n\n![monade](https://monade.io/wp-content/uploads/2023/02/logo-monade.svg)\n\ncognito_rails is maintained by [mònade](https://monade.io).\n\nWe \u003c3 open source software. [Contact us](https://monade.io/studio/contatti/) for your next project!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmonade%2Fcognito_rails","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmonade%2Fcognito_rails","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmonade%2Fcognito_rails/lists"}