module Fakecrm::Contacts
Public Class Methods
included(base)
click to toggle source
# File lib/fakecrm/server/contacts.rb, line 64 def self.included(base) base.class_eval do get '/crm/api/contacts.?:format?' do |format| fetch_many(Contact) end get '/crm/api/contacts/search.?:format?' do |format| search(Contact, [:account_id, :email, :login], [:first_name, :last_name, :job_title], params.fetch("sort_by", :updated_at).to_sym, params.fetch("sort_order", 'asc').to_s) end get '/crm/api/contacts/:id.?:format?' do |id, format| fetch_one(Contact, id.to_i) end put '/crm/api/contacts/:id.?:format?' do |id, format| update_one(Contact, id.to_i, params["contact"]) end post '/crm/api/contacts.?:format?' do |format| contact = params["contact"] contact.delete("title") # workaround for silly connector tests create_one(Contact, contact) end delete '/crm/api/contacts/:id.?:format?' do |id, format| # TODO: role check ~> 422 destroy_one(Contact, id.to_i) end # --- password --- post '/crm/api/contacts/:id/password_clear.?:format?' do |id, format| password_clear(id.to_i) end post '/crm/api/contacts/:id/password_request.?:format?' do |id, format| password_request(id.to_i) end post '/crm/api/contacts/password_set.?:format?' do |format| password_set end post '/crm/api/contacts/authenticate.?:format?' do |format| authenticate end end end
Public Instance Methods
authenticate()
click to toggle source
# File lib/fakecrm/server/contacts.rb, line 49 def authenticate contact = Contact.first(:login => params['login']) if !contact.nil? password = Password.first(:contact => contact) if !password.nil? status 200 return body({:id => contact.id}.to_json) end end status 422 body({'error' => "Authentication failed."}.to_json) end
password_clear(primary_key)
click to toggle source
# File lib/fakecrm/server/contacts.rb, line 25 def password_clear(primary_key) contact = Contact.get!(primary_key) Password.all(:contact => contact).destroy status 200 rescue ::DataMapper::ObjectNotFoundError => e status 404 end
password_request(primary_key)
click to toggle source
# File lib/fakecrm/server/contacts.rb, line 4 def password_request(primary_key) contact = Contact.get!(primary_key) if contact.email.nil? || contact.email.empty? status 422 else Password.all(:contact => contact).destroy password = Password.create(:contact => contact) if params["only_get_token"].to_s == 'true' status 200 body password.token.to_json else # TODO: send email? ::Fakecrm.logger.info("Sending email with password change token (not really)") status 200 body ''.to_json end end rescue ::DataMapper::ObjectNotFoundError => e status 404 end
password_set()
click to toggle source
# File lib/fakecrm/server/contacts.rb, line 33 def password_set password = Password.first(:token => params["token"]) if password.nil? status 404 else password.password = params['password'] if password.save status 200 body ''.to_json else status 422 end end end