Class: LinkedRails::Auth::OtpSecret

Inherits:
OtpBase
  • Object
show all
Defined in:
app/models/linked_rails/auth/otp_secret.rb

Instance Attribute Summary

Attributes inherited from OtpBase

#encoded_session, #otp_attempt

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from OtpBase

iri_template, owner_for_otp, singular_iri_template

Methods included from OtpHelper

#handle_expired_session, #owner_from_session, #session_from_param

Class Method Details

.activated?(owner_id) ⇒ Boolean

Returns:

  • (Boolean)


51
52
53
54
55
56
# File 'app/models/linked_rails/auth/otp_secret.rb', line 51

def activated?(owner_id)
  LinkedRails.otp_secret_class.exists?(
    owner_id: owner_id,
    active: true
  )
end

.form_classObject



58
59
60
# File 'app/models/linked_rails/auth/otp_secret.rb', line 58

def form_class
  LinkedRails.otp_secret_form_class
end

.preview_includesObject



62
63
64
# File 'app/models/linked_rails/auth/otp_secret.rb', line 62

def preview_includes
  i[image]
end

.requested_single_resource(params, _user_context) ⇒ Object



77
78
79
# File 'app/models/linked_rails/auth/otp_secret.rb', line 77

def requested_single_resource(params, _user_context)
  LinkedRails.otp_secret_class.find_by(id: params[:id])
end

.requested_singular_resource(params, user_context) ⇒ Object



66
67
68
69
70
71
72
73
74
75
# File 'app/models/linked_rails/auth/otp_secret.rb', line 66

def requested_singular_resource(params, user_context)
  owner = owner_for_otp(params, user_context)
  return if owner.blank?

  secret = LinkedRails.otp_secret_class.find_or_create_by!(owner: owner)
  secret.encoded_session = params[:session]
  secret
rescue ActiveRecord::RecordNotUnique
  requested_singular_resource(params, user_context)
end

.route_keyObject



81
82
83
# File 'app/models/linked_rails/auth/otp_secret.rb', line 81

def route_key
  'u/otp_secrets'
end

.singular_route_keyObject



85
86
87
# File 'app/models/linked_rails/auth/otp_secret.rb', line 85

def singular_route_key
  'u/otp_secret'
end

Instance Method Details

#imageObject



12
13
14
15
16
17
18
19
20
21
# File 'app/models/linked_rails/auth/otp_secret.rb', line 12

def image
  return if active? || !persisted?

  @image ||=
    LinkedRails::MediaObject.new(
      content_url: data_url,
      content_type: 'image/png',
      iri: LinkedRails.iri(path: root_relative_iri, fragment: 'image')
    )
end

#iri_optsObject



23
24
25
# File 'app/models/linked_rails/auth/otp_secret.rb', line 23

def iri_opts
  {id: id}
end

#redirect_urlObject



27
28
29
# File 'app/models/linked_rails/auth/otp_secret.rb', line 27

def redirect_url
  decoded_session['redirect_uri'] || LinkedRails.iri.to_s
end