Repository is archived
No commit activity in last 3 years
No release in over 3 years
Simple class for creating an IdentityToken and authenticating Layer clients
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.3
~> 0
~> 0

Runtime

~> 2.2, >= 1.4.1
 Project Readme

Layer::IdentityToken

Gem Version

Use this class to generate a token for authenticating the Layer SDK

Installation

Add this line to your application's Gemfile:

gem 'layer-identity_token'

And then execute:

$ bundle

Or install it yourself as:

$ gem install layer-identity_token

Setup

  1. Create a layer app
  2. Write down your provider ID (app's info tab)
  3. Create a new private key (app's authentication tab – we recommend to create keys for each developer and/or environments like: staging, development)
  4. Save the private key and note the key ID

Usage

token = Layer::IdentityToken.new(user_id, nonce, optional_expires_at)
token.encode

Integration

If you want to return this token as JSON and your framework (like Rails) uses #as_json you just write a controller like:

class ApiController
  def hello_layer
    token = Layer::IdentityToken.new(current_user.id, params[:nonce])

    render json: token
  end
end

Usage with Identity attributes

If you want to set some attributes on the Layer Identity, allowed attributes are: first_name, last_name, display_name, and avatar_url:

token = Layer::IdentityToken.new(user.id, nonce, expires_at, {
  'first_name' => user.first_name,
  'last_name' => user.last_name,
  'display_name' => user.display_name,
  'avatar_url' => user.avatar_url
})

token.encode

Configuration

Per default the class looks for ENV variables like:

LAYER_PROVIDER_ID
LAYER_KEY_ID
LAYER_PRIVATE_KEY

If you can not set ENV variables you can also set them on the class directly:

Layer::IdentityToken.layer_provider_id = "layer:///providers/PROVIDER_ID"
Layer::IdentityToken.layer_key_id = "layer:///keys/KEY_ID"
Layer::IdentityToken.layer_private_key = "private_key"

The prefixes are not needed necessarily as we do some normalizing on these IDs for compatibility reasons.

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request