Sha256: 789132cecd0b99bb5ccfcc55af864a8aab9914d50369577f7029584b3831ec85
Contents?: true
Size: 1.8 KB
Versions: 1
Compression:
Stored size: 1.8 KB
Contents
# frozen_string_literal: true require 'oauth2' require 'omniauth/strategies/oauth2' require 'uri' module OmniAuth module Strategies class SeznamCz < OmniAuth::Strategies::OAuth2 ALLOWED_ISSUERS = ['login.szn.cz'].freeze BASE_SCOPES = %w[identity contact-phone avatar].freeze DEFAULT_SCOPE = 'identity' USER_INFO_URL = 'https://login.szn.cz/api/v1/user' option :name, 'seznam_cz' option :skip_image_info, true option :authorize_options, %i[scope state redirect_uri] option :authorized_client_ids, [] option :client_options, site: 'https://login.szn.cz', authorize_url: '/api/v1/oauth/auth', token_url: '/api/v1/oauth/token', auth_scheme: :request_body def authorize_params super.tap do |params| options[:authorize_options].each do |k| params[k] = request.params[k.to_s] unless [nil, ''].include?(request.params[k.to_s]) end params[:scope] = get_scope(params) session['omniauth.state'] = params[:state] if params[:state] end end uid { raw_info['sub'] } info do { username: raw_info['username'], email: raw_info['username'], domain: raw_info['domain'], firstname: raw_info['firstname'], contact_phone: raw_info['contact-phone'], avatar_url: raw_info['avatar-url'] } end extra do { 'raw_info' => raw_info } end def raw_info @raw_info ||= access_token.get(USER_INFO_URL).parsed end private def get_scope(params) raw_scope = params[:scope] || DEFAULT_SCOPE scope_list = raw_scope.split(' ').map { |item| item.split(',') }.flatten scope_list.join(',') end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
omniauth-seznam-cz-0.1.0 | lib/omniauth/strategies/seznam_cz.rb |