lib/zendesk2/user.rb in zendesk2-1.9.0 vs lib/zendesk2/user.rb in zendesk2-1.10.0

- old
+ new

@@ -1,5 +1,6 @@ +# frozen_string_literal: true class Zendesk2::User include Zendesk2::Model extend Zendesk2::Attributes @@ -44,15 +45,17 @@ attribute :role, type: :string # @return [Boolean] If this user is shared from a different Zendesk, ticket sharing accounts only attribute :shared, type: :boolean # @return [String] The signature of this user. Only agents and admins can have signatures attribute :signature, type: :string - # @return [Boolean] Tickets from suspended users are also suspended, and these users cannot log in to the end-user portal + # @return [Boolean] Tickets from suspended users are also suspended, and these users cannot log in to the end-user + # portal attribute :suspended, type: :boolean # @return [Array] The tags of the user. Only present if your account has user tagging enabled attribute :tags, type: :array - # @return [String] Specified which tickets this user has access to. Possible values are: "organization", "groups", "assigned", "requested", null + # @return [String] Specified which tickets this user has access to. + # Possible values are: "organization", "groups", "assigned", "requested", null attribute :ticket_restriction, type: :string # @return [String] The time-zone of this user attribute :time_zone, type: :string # @return [Time] The time of the last update of the user attribute :updated_at, type: :time @@ -68,63 +71,59 @@ def save! data = if new_record? requires :name, :email - cistern.create_user("user" => self.attributes) + cistern.create_user('user' => attributes) else requires :identity - cistern.update_user("user" => self.attributes) - end.body["user"] + cistern.update_user('user' => attributes) + end.body['user'] merge_attributes(data) end def destroy! requires :identity - if self.email == cistern.username - raise "don't nuke yourself" - end + raise "don't nuke yourself" if email == cistern.username merge_attributes( - cistern.destroy_user("user" => {"id" => self.identity}).body["user"] + cistern.destroy_user('user' => { 'id' => identity }).body['user'] ) end def destroyed? - !reload || !self.active + !reload || !active 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 http://www.zendesk.com/support/api/remote-authentication - def login_url(timestamp, options={}) + def login_url(timestamp, options = {}) requires :name, :email return_to = options[:return_to] - token = self.cistern.token || options[:token] + token = cistern.token || options[:token] - uri = URI.parse(self.cistern.url) - uri.path = "/access/remote" + uri = URI.parse(cistern.url) + uri.path = '/access/remote' - raise "timestamp cannot be nil" unless timestamp + raise 'timestamp cannot be nil' unless timestamp - hash_str = "#{self.name}#{self.email}#{token}#{timestamp}" + hash_str = "#{name}#{email}#{token}#{timestamp}" query_values = { 'name' => name, 'email' => email, 'timestamp' => timestamp, - 'hash' => Digest::MD5.hexdigest(hash_str) + 'hash' => Digest::MD5.hexdigest(hash_str), } - unless Zendesk2.blank?(return_to) - query_values['return_to'] = return_to - end + query_values['return_to'] = return_to unless Zendesk2.blank?(return_to) uri.query = Faraday::NestedParamsEncoder.encode(query_values) uri.to_s end @@ -135,61 +134,66 @@ # Cargo-culted from: https://github.com/zendesk/zendesk_jwt_sso_examples/blob/master/ruby_on_rails_jwt.rb def jwt_login_url(options = {}) requires :name, :email return_to = options[:return_to] - jwt_token = self.cistern.jwt_token || options[:jwt_token] + jwt_token = cistern.jwt_token || options[:jwt_token] - uri = URI.parse(self.cistern.url) - uri.path = "/access/jwt" + 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 => self.name, - :email => self.email, - }, jwt_token) + 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 + 'jwt' => payload, } - unless Zendesk2.blank?(return_to) - query_values['return_to'] = return_to - end + query_values['return_to'] = return_to unless Zendesk2.blank?(return_to) uri.query = Faraday::NestedParamsEncoder.encode(query_values) uri.to_s end # @return [Zendesk2::Tickets] tickets this user requested def tickets requires :identity - cistern.tickets(requester_id: self.identity) + cistern.tickets(requester_id: identity) end alias requested_tickets tickets # @return [Zendesk2::Tickets] tickets this user is CC'd def ccd_tickets requires :identity - cistern.tickets(collaborator_id: self.identity) + cistern.tickets(collaborator_id: identity) end # @return [Zendesk2::UserIdentities] the identities of this user def identities - self.cistern.user_identities("user_id" => self.identity) + cistern.user_identities('user_id' => identity) end # @return [Zendesk2::Memberships] the organization memberships of this user def memberships - self.cistern.memberships(user: self) + cistern.memberships(user: self) end # @return [Zendesk2::Organizations] the organizations of this user through memberships def organizations - self.cistern.organizations(user: self) + cistern.organizations(user: self) + end + + # @return [Zendesk2::HelpCenter::Post] authored posts + def posts + requires :identity + + cistern.help_center_posts(user_id: identity) end end