module MyServices::Actions::Post::ClassMethods
Public Instance Methods
authentication_payload(user, refresh_token)
click to toggle source
# File lib/my-services/actions/post.rb, line 35 def authentication_payload(user, refresh_token) return nil unless user && user.id if user.role == User::TENANT tenant = Tenant.where(user_id: user.id, status: true).first tenant_id = tenant.id name = tenant.first_name + " " + tenant.last_name multiple_tenant_accounts = user.tenants.where(status: true).count > 1 ? true : false elsif user.role == User::SITE name = "Site Admin" else name = "Admin" end site_id = user.site_id if user.site_id.present? { authentication_token: ::AuthToken.encode({ user_id: user.id }), user: { id: user.id, email: user.email, role: user.role, name: name, site_id: site_id, sign_in_count: user.sign_in_count, tenant_id: tenant_id, multiple_tenant_accounts: multiple_tenant_accounts} , refresh_token: refresh_token, site_id: user.site_id, success: true } end
login_response(user, refresh_token, request)
click to toggle source
# File lib/my-services/actions/post.rb, line 25 def login_response(user, refresh_token, request) client_id = request.headers["REMOTE_ADDR"] $redis.hmset(refresh_token, "user_id", user.id, "client_id", client_id) $redis.expire refresh_token, 43200 payload = authentication_payload(user, refresh_token) $redis.sadd(user.email, refresh_token) authentication_token = payload[:authentication_token].split(".").last $redis.hset(authentication_token, "client_id", client_id) payload end
sign_in(email, password, request)
click to toggle source
# File lib/my-services/actions/post.rb, line 5 def sign_in(email, password, request) user = User.where(email: email).last unless user.present? user = User.where(alternate_email: email).last end if user.present? and user.valid_password?(password) and user.role != User::TENANT #and user.role != User::SITE refresh_token = Digest::MD5.hexdigest(Time.now.to_s + user.email) user.update current_sign_in_at: Time.zone.now user.update sign_in_count: (user.sign_in_count + 1) Audit.create(user_id: user.id, action: "login", action_occured_time: Time.zone.now) # Rails.logger.request.info(request.headers) login_response(user, refresh_token, request) else # Rails.logger.request.info(request.headers) # Rails.logger.auth_failure.info("#{params.inspect}") { success: false, message: "Invalid Email or Password"} end end
sign_out(request)
click to toggle source
# File lib/my-services/actions/post.rb, line 57 def sign_out(request) refresh_token = request.headers["HTTP_REFRESH_TOKEN"] auth_token = request.headers["HTTP_AUTHENTICATION_TOKEN"] if refresh_token.present? token_hash = $redis.hgetall(refresh_token) user = User.find(token_hash["user_id"].to_i) $redis.del(refresh_token) $redis.del(auth_token.split('.').last) $redis.srem(user.email, refresh_token) {:success=>true, :message => "Log out successful"} else {:success => false, :message => "Refresh token got nil"} end end