class Zendesk2::User
Attributes
Public Instance Methods
@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
# 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
# File lib/zendesk2/user.rb, line 96 def destroyed? !reload || !active end
@return [Zendesk2::UserIdentities] the identities of this user
# File lib/zendesk2/user.rb, line 179 def identities cistern.user_identities('user_id' => identity) end
@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
@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
@return [Zendesk2::Memberships] the organization memberships of this user
# File lib/zendesk2/user.rb, line 184 def memberships cistern.memberships(user: self) end
@return [Zendesk2::Organizations] the organizations of this user through memberships
# File lib/zendesk2/user.rb, line 189 def organizations cistern.organizations(user: self) end
@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
# 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
@return [Zendesk2::HelpCenter::Subscriptions] subscriptions
# File lib/zendesk2/user.rb, line 194 def subscriptions requires :identity cistern.help_center_subscriptions(user_id: identity) end
@return [Zendesk2::Tickets] tickets this user requested
# File lib/zendesk2/user.rb, line 164 def tickets requires :identity cistern.tickets(requester_id: identity) end