Do you want to focus on your core applications and get to market faster without worrying about authentication, authorization and security?

Stormpath can help you easily integrate highly secure user management, authentication and authorization to your applications.

Stormpath provides REST API for integration and wrappers for all popular languages/platforms. In this tutorial, we will see how to setup Stormpath application and integrate it in a Ruby on Rails application.

Setup Rails Application

Create rails new application

$ rails new StormpathApp

$ cd StormpathApp

Add stormpath-rails gem in Gemfile

gem 'stormpath-rails'

and run bundle from command line from the application home directory

$ bundle

Generate Stormpath supported files

$ rails generate strompath:install

This will insert the config yaml file and the neccessary controller and view modules.

If you want to override views which in most case would be, use generator to create copy of views in your application

$ rails generate stormpath:views

Setup Stormpath account

Lets us first sign up on Stormpath and sign in to create an application there.

Application

Click on Applications Tab to see all the applications.

Click on Applications Tab

By default it give two applications pretreated. But let us create our own application.

Click on the Create Application button and add details required.

Click on the Create Application button

Click on the Accounts menu to see all accounts(users) created. For now you will be the one only.

Click on the Accounts menu

Click on your name to view your account details and find API keys section at bottom of the page.

account details

Click on Create API Key button to get API key with secret which we need to authenticate from Rails application. It will prompt you to download a file to having API Key id and secret.

Create configuration

Create local_env.yml file in config and add this code

STORMPATH_CLIENT_APIKEY_ID: XXXXXXXXXXXXXXXXXXXXX

STORMPATH_CLIENT_APIKEY_SECRET: XXXXXXXXXXXXXXXXXXXX

STORMPATH_APPLICATION_HREF: https://api.stormpath.com/v1/XXXX

Also add this code in application.rb to load above environment variable while rails environment is loading

config.before_configuration do

env_file = File.join(Rails.root, 'config', 'local_env.yml')

YAML.load(File.open(env_file)).each do |key, value|

ENV[key.to_s] = value
end if File.exists?(env_file)

end

Configure config/stormpath.yml

stormpath:

application:

href: <%= ENV[‘STORMPATH_APPLICATION_HREF’] %>

name: null

Add routes

Rails.application.routes.draw do

stormpath_rails_routes()

end

If you want to override the controller then you have to write routes as actions in params of stormpath_rails_routes() method.

Useful helper methods

Using the stormpath rails gem, we get following helpers to be used in controller as well as views

  • current_account – get the current account
  • signed_in? – check if the user is signed in.
  • require_authentication! – Generally used in before_filter to check if user is required to be authenticated before calling specific actions.
  • require_no_authentication! – Opposite to require_authentication! access (a logged in user shouldn’t be able to see the login form).

Create Welcome page for your rails application

$ rails g controller home

Add show method in home_controller.rb for welcome page view.

class HomeController < ApplicationController

before_action :require_authentication!

def show

end

end

Let’s add login/logout link in show.html.erb.

<% if signed_in? %>

<h3> Hello, <%= current_account.full_name %> </h3>

<%= link_to “Logout”, logout_path, method: :post %>

<% else %>

<%= link_to “Login”, new_login_path %>

<% end %>

Add routes to show home page

root :to => 'home#show'

Finally, Start up your rails server:

$ rails s

Open your browser and navigate to http://localhost:3000

You should be able to see following screen. Create an account and come back to home to sign in.

home to sign in

After successfully sign in, you should see page with user’s name and logout link like below

logout

You can verify users from your Stormpath Applications > StormpathApp on Accounts tab.

Stormpath Applications

Hope you enjoyed! Happy reading!


Click here for more details…

At BoTree Technologies, we build enterprise applications with our RoR team of 25+ engineers.

We also specialize in Python, RPA, AI, Django, JavaScript and ReactJS.

Consulting is free – let us help you grow!