class Zendesk2::User

Attributes

errors[RW]

Public Instance Methods

ccd_tickets() click to toggle source

@return [Zendesk2::Tickets] tickets this user is CC’d

# File lib/zendesk2/user.rb, line 172
def ccd_tickets
  requires :identity

  cistern.tickets(collaborator_id: identity)
end
destroy!() click to toggle source
# File lib/zendesk2/user.rb, line 86
def destroy!
  requires :identity

  raise "don't nuke yourself" if email == cistern.username

  merge_attributes(
    cistern.destroy_user('user' => { 'id' => identity }).body['user']
  )
end
destroyed?() click to toggle source
# File lib/zendesk2/user.rb, line 96
def destroyed?
  !reload || !active
end
identities() click to toggle source

@return [Zendesk2::UserIdentities] the identities of this user

# File lib/zendesk2/user.rb, line 179
def identities
  cistern.user_identities('user_id' => identity)
end
jwt_login_url(options = {}) click to toggle source

@option options [String] :return_to (nil) url to return to after initial auth @return [String] url to redirect your user’s browser to for login @see support.zendesk.com/entries/23675367-Setting-up-single-sign-on-with-JWT-JSON-Web-Token- Cargo-culted from: github.com/zendesk/zendesk_jwt_sso_examples/blob/master/ruby_on_rails_jwt.rb

# File lib/zendesk2/user.rb, line 135
def jwt_login_url(options = {})
  requires :name, :email

  return_to = options[:return_to]
  jwt_token = cistern.jwt_token || options[:jwt_token]

  uri       = URI.parse(cistern.url)
  uri.path  = '/access/jwt'

  iat = Time.now.to_i
  jti = "#{iat}/#{rand(36**64).to_s(36)}"
  payload = JWT.encode({
                         iat: iat, # Seconds since epoch, determine when this token is stale
                         jti: jti, # Unique token id, helps prevent replay attacks
                         name: name,
                         email: email,
                       }, jwt_token)

  query_values = {
    'jwt' => payload,
  }
  query_values['return_to'] = return_to unless Zendesk2.blank?(return_to)

  uri.query = Faraday::NestedParamsEncoder.encode(query_values)

  uri.to_s
end
login_url(timestamp, options = {}) click to toggle source

@param [Time] timestamp time sent with intial handshake @option options [String] :return_to (nil) url to return to after handshake @return [String] remote authentication login url Using this method requires you to implement the additional (user-defined) /handshake endpoint @see www.zendesk.com/support/api/remote-authentication

# File lib/zendesk2/user.rb, line 105
def login_url(timestamp, options = {})
  requires :name, :email

  return_to = options[:return_to]
  token     = cistern.token || options[:token]

  uri      = URI.parse(cistern.url)
  uri.path = '/access/remote'

  raise 'timestamp cannot be nil' unless timestamp

  hash_str = "#{name}#{email}#{token}#{timestamp}"
  query_values = {
    'name'      => name,
    'email'     => email,
    'timestamp' => timestamp,
    'hash'      => Digest::MD5.hexdigest(hash_str),
  }

  query_values['return_to'] = return_to unless Zendesk2.blank?(return_to)

  uri.query = Faraday::NestedParamsEncoder.encode(query_values)

  uri.to_s
end
memberships() click to toggle source

@return [Zendesk2::Memberships] the organization memberships of this user

# File lib/zendesk2/user.rb, line 184
def memberships
  cistern.memberships(user: self)
end
organizations() click to toggle source

@return [Zendesk2::Organizations] the organizations of this user through memberships

# File lib/zendesk2/user.rb, line 189
def organizations
  cistern.organizations(user: self)
end
posts() click to toggle source

@return [Zendesk2::HelpCenter::Post] authored posts

# File lib/zendesk2/user.rb, line 201
def posts
  requires :identity

  cistern.help_center_posts(user_id: identity)
end
requested_tickets()
Alias for: tickets
save!() click to toggle source
# File lib/zendesk2/user.rb, line 72
def save!
  data = if new_record?
           requires :name, :email

           cistern.create_user('user' => attributes)
         else
           requires :identity

           cistern.update_user('user' => attributes)
         end.body['user']

  merge_attributes(data)
end
subscriptions() click to toggle source

@return [Zendesk2::HelpCenter::Subscriptions] subscriptions

# File lib/zendesk2/user.rb, line 194
def subscriptions
  requires :identity

  cistern.help_center_subscriptions(user_id: identity)
end
tickets() click to toggle source

@return [Zendesk2::Tickets] tickets this user requested

# File lib/zendesk2/user.rb, line 164
def tickets
  requires :identity

  cistern.tickets(requester_id: identity)
end
Also aliased as: requested_tickets