update license
This commit is contained in:
3
app/assets/javascripts/dashboard.coffee
Normal file
3
app/assets/javascripts/dashboard.coffee
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# Place all the behaviors and hooks related to the matching controller here.
|
||||||
|
# All this logic will automatically be available in application.js.
|
||||||
|
# You can use CoffeeScript in this file: http://coffeescript.org/
|
||||||
3
app/assets/javascripts/sessions.coffee
Normal file
3
app/assets/javascripts/sessions.coffee
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# Place all the behaviors and hooks related to the matching controller here.
|
||||||
|
# All this logic will automatically be available in application.js.
|
||||||
|
# You can use CoffeeScript in this file: http://coffeescript.org/
|
||||||
3
app/assets/stylesheets/dashboard.scss
Normal file
3
app/assets/stylesheets/dashboard.scss
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
// Place all the styles related to the dashboard controller here.
|
||||||
|
// They will automatically be included in application.css.
|
||||||
|
// You can use Sass (SCSS) here: http://sass-lang.com/
|
||||||
3
app/assets/stylesheets/sessions.scss
Normal file
3
app/assets/stylesheets/sessions.scss
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
// Place all the styles related to the sessions controller here.
|
||||||
|
// They will automatically be included in application.css.
|
||||||
|
// You can use Sass (SCSS) here: http://sass-lang.com/
|
||||||
@@ -2,7 +2,8 @@ module LoginVerification
|
|||||||
extend ActiveSupport::Concern
|
extend ActiveSupport::Concern
|
||||||
|
|
||||||
included do
|
included do
|
||||||
before_action :authenticate_session_token
|
before_action :authenticate
|
||||||
|
puts "LoginVerification"
|
||||||
helper_method :current_company, :current_shop, :current_login_employee, :current_user, :get_cashier, :order_reservation, :bank_integration, :shop_detail
|
helper_method :current_company, :current_shop, :current_login_employee, :current_user, :get_cashier, :order_reservation, :bank_integration, :shop_detail
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -86,7 +87,7 @@ module LoginVerification
|
|||||||
token = session[:session_token]
|
token = session[:session_token]
|
||||||
if (token)
|
if (token)
|
||||||
#@current_user = User.find_by(api_key: token)
|
#@current_user = User.find_by(api_key: token)
|
||||||
#Rails.logger.debug "token - " + token.to_s
|
# Rails.logger.debug "token - " + token.to_s
|
||||||
|
|
||||||
@user = Employee.authenticate_by_token(token)
|
@user = Employee.authenticate_by_token(token)
|
||||||
if @user
|
if @user
|
||||||
@@ -97,6 +98,6 @@ module LoginVerification
|
|||||||
end
|
end
|
||||||
|
|
||||||
def render_unauthorized
|
def render_unauthorized
|
||||||
redirect_to root_path
|
redirect_to login_path
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -3,17 +3,32 @@ module MultiTenancy
|
|||||||
|
|
||||||
included do
|
included do
|
||||||
set_current_tenant_through_filter if respond_to? :set_current_tenant_through_filter
|
set_current_tenant_through_filter if respond_to? :set_current_tenant_through_filter
|
||||||
before_action :find_shop_by_subdomain_or_frist if respond_to? :before_action
|
before_action :set_current_tenant_by_subdomain_or_name if respond_to? :before_action
|
||||||
|
helper_method :current_shop if respond_to? :helper_method
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
def find_shop_by_subdomain_or_frist
|
def set_current_tenant_by_subdomain_or_name
|
||||||
if request.subdomain.present?
|
find_tenant_by_subdomain_or_name || not_found
|
||||||
shop_code = request.subdomain.partition('-').last
|
end
|
||||||
shop = Shop.find_by(shop_code: shop_code)
|
|
||||||
else
|
def find_tenant_by_subdomain_or_name
|
||||||
shop = Shop.first
|
if request.subdomains.last && request.subdomains.last != "www"
|
||||||
|
shop_code = request.subdomains.last.partition('-').last
|
||||||
|
set_current_tenant(Shop.find_by(shop_code: shop_code))
|
||||||
|
elsif Shop.count == 1
|
||||||
|
set_current_tenant(Shop.first)
|
||||||
end
|
end
|
||||||
set_current_tenant(shop)
|
end
|
||||||
|
|
||||||
|
def not_found
|
||||||
|
respond_to do |format|
|
||||||
|
format.html { render :file => "#{Rails.root}/public/404", :layout => false, :status => :not_found }
|
||||||
|
format.json { head :not_found }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def current_shop
|
||||||
|
ActsAsTenant.current_tenant
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
94
app/controllers/dashboard_controller.rb
Normal file
94
app/controllers/dashboard_controller.rb
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
class DashboardController < ApplicationController
|
||||||
|
|
||||||
|
def index
|
||||||
|
@from, @to = get_date_range_from_params
|
||||||
|
|
||||||
|
@shop = Shop.current_shop
|
||||||
|
|
||||||
|
@orders = Sale.receipt_date_between(@from, @to).where("payment_status = 'new' and sale_status = 'bill'")
|
||||||
|
@sales = Sale.receipt_date_between(@from, @to).completed
|
||||||
|
|
||||||
|
if current_user.present? && !(current_user.role == 'administrator' || current_user.role == 'manager' || current_user.role == 'account' || current_user.role == 'supervisor')
|
||||||
|
if shift = ShiftSale.current_open_shift(current_user.id)
|
||||||
|
@orders = @orders.where(shift_sale_id: shift.id)
|
||||||
|
@sales = @sales.where(shift_sale_id: shift.id)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
@top_products = Sale.top_bottom_products(current_user,@from,@to,"top")
|
||||||
|
@bottom_products = Sale.top_bottom_products(current_user,@from,@to,"bottom")
|
||||||
|
@hourly_sales = Sale.hourly_sales(current_user,@from,@to)
|
||||||
|
# .group_by_hour(:created_at, :time_zone => 'Asia/Rangoon',format: '%I:%p')
|
||||||
|
# .sum(:grand_total)
|
||||||
|
employee_sales = Sale.employee_sales(current_user,@from,@to)
|
||||||
|
# .sum("(CASE WHEN sp.payment_method='cash' THEN ((sp.payment_amount) - (sales.amount_changed)) ELSE (sp.payment_amount) END)")
|
||||||
|
@employee_sales = []
|
||||||
|
if !employee_sales.nil?
|
||||||
|
employee_sales.each do |emp|
|
||||||
|
emp_data = []
|
||||||
|
if emp.payment_amount > 0
|
||||||
|
emp_data.push([emp.e_name, emp.payment_amount])
|
||||||
|
|
||||||
|
@employee_sales.push({'name' => emp.payment_method, 'data' => emp_data})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
@inventories = StockJournal.inventory_balances(@from,@to).sum(:balance)
|
||||||
|
|
||||||
|
@total_trans = Sale.total_trans(current_user,@from,@to)
|
||||||
|
@total_card = Sale.total_card_sale(current_user,@from,@to)
|
||||||
|
@total_credit = Sale.credit_payment(current_user,@from,@to)
|
||||||
|
|
||||||
|
@sale_data = Array.new
|
||||||
|
@total_payment_methods = Sale.total_payment_methods(current_user,@from,@to)
|
||||||
|
|
||||||
|
if !@total_payment_methods.nil?
|
||||||
|
@total_payment_methods.each do |payment|
|
||||||
|
pay = Sale.payment_sale(payment.payment_method, current_user,@from,@to)
|
||||||
|
@sale_data.push({payment.payment_method => pay.payment_amount})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
@summ_sale = Sale.summary_sale_receipt(current_user,@from,@to)
|
||||||
|
@total_customer, @total_dinein, @total_takeaway, @total_membership = Sale.total_customer(current_user,@from,@to)
|
||||||
|
# @total_other_customer = Sale.total_other_customer(today,current_user)
|
||||||
|
|
||||||
|
@total_order = Sale.total_order(current_user,@from,@to)
|
||||||
|
@total_accounts = Account.select("accounts.id as account_id, accounts.title as title")
|
||||||
|
@account_data = Array.new
|
||||||
|
if !@total_accounts.nil?
|
||||||
|
@total_accounts.each do |account|
|
||||||
|
acc = Sale.account_data(account.account_id,current_user,@from,@to)
|
||||||
|
if !acc.nil? && acc.cnt_acc > 0
|
||||||
|
@account_data.push({account.title => acc.cnt_acc, account.title + '_amount' => acc.total_acc})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
@total_accounts = @total_accounts.reject.with_index { |x, i| @account_data[i].nil? }
|
||||||
|
end
|
||||||
|
|
||||||
|
@top_items = Sale.top_items(current_user,@from,@to)
|
||||||
|
@total_foc_items = Sale.total_foc_items(current_user,@from,@to)
|
||||||
|
|
||||||
|
# get printer info
|
||||||
|
@print_settings = PrintSetting.get_precision_delimiter()
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def get_date_range_from_params
|
||||||
|
if params[:from].present? && params[:to].present?
|
||||||
|
if params[:from_time].present? && params[:to_time].present?
|
||||||
|
from = Time.parse("#{params[:from]} #{params[:from_time]}")
|
||||||
|
to = Time.parse("#{params[:to]} #{params[:to_time]}")
|
||||||
|
else
|
||||||
|
from = Time.parse(params[:from])
|
||||||
|
to = Time.parse(params[:to]).end_of_day
|
||||||
|
end
|
||||||
|
else
|
||||||
|
from = Time.now.beginning_of_day
|
||||||
|
to = Time.now.end_of_day
|
||||||
|
end
|
||||||
|
return from, to
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
@@ -1,234 +1,37 @@
|
|||||||
class HomeController < ApplicationController
|
class HomeController < ApplicationController
|
||||||
# layout "application", except: [:index, :show]
|
|
||||||
# skip_before_action :authenticate, only: [:index, :show, :create, :update, :destroy]
|
|
||||||
|
|
||||||
before_action :check_user, only: :dashboard
|
|
||||||
|
|
||||||
# Special check for only dashboard
|
|
||||||
def check_user
|
|
||||||
if current_user.nil?
|
|
||||||
redirect_to root_path
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def current_user
|
|
||||||
@current_user ||= Employee.find_by_token_session(session[:session_token]) if session[:session_token]
|
|
||||||
end
|
|
||||||
|
|
||||||
def index
|
def index
|
||||||
# @employees = Employee.all_emp_except_waiter.order("name asc")
|
redirect_to route_by_role
|
||||||
@employees = Employee.all.where("is_active = true").order("name asc")
|
|
||||||
@roles = Employee.distinct.pluck(:role)
|
|
||||||
# byebug
|
|
||||||
# @roles = Lookup.collection_of("employee_roles")
|
|
||||||
@login_form = LoginForm.new()
|
|
||||||
render "layouts/login_dashboard", layout: false
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def show
|
private
|
||||||
@login_form = LoginForm.new()
|
|
||||||
@login_form.emp_id = params[:emp_id]
|
|
||||||
render "layouts/login", layout: false
|
|
||||||
end
|
|
||||||
|
|
||||||
def update
|
def route_by_role
|
||||||
@login_form = LoginForm.new()
|
if current_user.role == "administrator"
|
||||||
@login_form.emp_id = params[:emp_id]
|
dashboard_path
|
||||||
@login_form.password = params[:login_form][:password]
|
elsif current_user.role == "cashier"
|
||||||
@employee = Employee.login(@login_form.emp_id, @login_form.password)
|
|
||||||
|
|
||||||
if @employee != nil
|
|
||||||
session[:session_token] = @employee.token_session
|
|
||||||
route_by_role(@employee)
|
|
||||||
else
|
|
||||||
flash[:notice] ="Invalid PIN for Employee. Please try again!"
|
|
||||||
render :show
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def create
|
|
||||||
@login_form = LoginForm.new()
|
|
||||||
@login_form.emp_id = params[:login_form][:emp_id]
|
|
||||||
@login_form.password = params[:login_form][:password]
|
|
||||||
@employee = Employee.login(@login_form.emp_id, @login_form.password)
|
|
||||||
|
|
||||||
if @employee != nil
|
|
||||||
if @employee.is_active
|
|
||||||
if @employee.role == "administrator"
|
|
||||||
session[:session_token] = @employee.token_session
|
|
||||||
redirect_to dashboard_path
|
|
||||||
elsif @employee.role == "cashier"
|
|
||||||
session[:session_token] = @employee.token_session
|
|
||||||
route_by_role(@employee)
|
|
||||||
elsif @employee.role == "manager"
|
|
||||||
session[:session_token] = @employee.token_session
|
|
||||||
redirect_to dashboard_path
|
|
||||||
elsif @employee.role == "supervisor"
|
|
||||||
session[:session_token] = @employee.token_session
|
|
||||||
route_by_role(@employee)
|
|
||||||
# redirect_to origami_root_path
|
|
||||||
elsif @employee.role == "waiter"
|
|
||||||
session[:session_token] = @employee.token_session
|
|
||||||
route_by_role(@employee)
|
|
||||||
elsif @employee.role == "account"
|
|
||||||
session[:session_token] = @employee.token_session
|
|
||||||
redirect_to reports_dailysale_index_path
|
|
||||||
elsif @employee.role == "kitchen"
|
|
||||||
session[:session_token] = @employee.token_session
|
|
||||||
redirect_to oqs_root_path
|
|
||||||
else
|
|
||||||
render :index
|
|
||||||
end
|
|
||||||
else
|
|
||||||
redirect_to root_path, :notice => "This Employee is not active"
|
|
||||||
end
|
|
||||||
else
|
|
||||||
redirect_to root_path, :notice => "Username and Password doesn't match!"
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
def dashboard
|
|
||||||
@from, @to = get_date_range_from_params
|
|
||||||
|
|
||||||
@shop = Shop.current_shop
|
|
||||||
|
|
||||||
@orders = Sale.receipt_date_between(@from, @to).where("payment_status = 'new' and sale_status = 'bill'")
|
|
||||||
@sales = Sale.receipt_date_between(@from, @to).completed
|
|
||||||
|
|
||||||
if current_user.present? && !(current_user.role == 'administrator' || current_user.role == 'manager' || current_user.role == 'account' || current_user.role == 'supervisor')
|
|
||||||
if shift = ShiftSale.current_open_shift(current_user.id)
|
|
||||||
@orders = @orders.where(shift_sale_id: shift.id)
|
|
||||||
@sales = @sales.where(shift_sale_id: shift.id)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
@top_products = Sale.top_bottom_products(current_user,@from,@to,"top")
|
|
||||||
@bottom_products = Sale.top_bottom_products(current_user,@from,@to,"bottom")
|
|
||||||
@hourly_sales = Sale.hourly_sales(current_user,@from,@to)
|
|
||||||
# .group_by_hour(:created_at, :time_zone => 'Asia/Rangoon',format: '%I:%p')
|
|
||||||
# .sum(:grand_total)
|
|
||||||
employee_sales = Sale.employee_sales(current_user,@from,@to)
|
|
||||||
# .sum("(CASE WHEN sp.payment_method='cash' THEN ((sp.payment_amount) - (sales.amount_changed)) ELSE (sp.payment_amount) END)")
|
|
||||||
@employee_sales = []
|
|
||||||
if !employee_sales.nil?
|
|
||||||
employee_sales.each do |emp|
|
|
||||||
emp_data = []
|
|
||||||
if emp.payment_amount > 0
|
|
||||||
emp_data.push([emp.e_name, emp.payment_amount])
|
|
||||||
|
|
||||||
@employee_sales.push({'name' => emp.payment_method, 'data' => emp_data})
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@inventories = StockJournal.inventory_balances(@from,@to).sum(:balance)
|
|
||||||
|
|
||||||
@total_trans = Sale.total_trans(current_user,@from,@to)
|
|
||||||
@total_card = Sale.total_card_sale(current_user,@from,@to)
|
|
||||||
@total_credit = Sale.credit_payment(current_user,@from,@to)
|
|
||||||
|
|
||||||
@sale_data = Array.new
|
|
||||||
@total_payment_methods = Sale.total_payment_methods(current_user,@from,@to)
|
|
||||||
|
|
||||||
if !@total_payment_methods.nil?
|
|
||||||
@total_payment_methods.each do |payment|
|
|
||||||
pay = Sale.payment_sale(payment.payment_method, current_user,@from,@to)
|
|
||||||
@sale_data.push({payment.payment_method => pay.payment_amount})
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
@summ_sale = Sale.summary_sale_receipt(current_user,@from,@to)
|
|
||||||
@total_customer, @total_dinein, @total_takeaway, @total_membership = Sale.total_customer(current_user,@from,@to)
|
|
||||||
# @total_other_customer = Sale.total_other_customer(today,current_user)
|
|
||||||
|
|
||||||
@total_order = Sale.total_order(current_user,@from,@to)
|
|
||||||
@total_accounts = Account.select("accounts.id as account_id, accounts.title as title")
|
|
||||||
@account_data = Array.new
|
|
||||||
if !@total_accounts.nil?
|
|
||||||
@total_accounts.each do |account|
|
|
||||||
acc = Sale.account_data(account.account_id,current_user,@from,@to)
|
|
||||||
if !acc.nil? && acc.cnt_acc > 0
|
|
||||||
@account_data.push({account.title => acc.cnt_acc, account.title + '_amount' => acc.total_acc})
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@total_accounts = @total_accounts.reject.with_index { |x, i| @account_data[i].nil? }
|
|
||||||
end
|
|
||||||
|
|
||||||
@top_items = Sale.top_items(current_user,@from,@to)
|
|
||||||
@total_foc_items = Sale.total_foc_items(current_user,@from,@to)
|
|
||||||
|
|
||||||
# get printer info
|
|
||||||
@print_settings = PrintSetting.get_precision_delimiter()
|
|
||||||
end
|
|
||||||
|
|
||||||
def destroy
|
|
||||||
# clear in employee session
|
|
||||||
Employee.logout(session[:session_token])
|
|
||||||
session[:session_token] = nil
|
|
||||||
# redirect_to root_path
|
|
||||||
render :json => {:status=> "Success", :url => root_path }.to_json
|
|
||||||
end
|
|
||||||
|
|
||||||
def run_teamviewer
|
|
||||||
if File.directory?("/opt/teamviewer")
|
|
||||||
output = IO.popen('/opt/teamviewer/tv_bin/script/teamviewer')
|
|
||||||
render :json => {:status=> true}
|
|
||||||
else
|
|
||||||
render :json => {:status=> false}
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
|
||||||
|
|
||||||
# Never trust parameters from the scary internet, only allow the white list through.
|
|
||||||
def settings_home_params
|
|
||||||
params.require(:login_form).permit(:emp_id, :password)
|
|
||||||
end
|
|
||||||
|
|
||||||
def route_by_role(employee)
|
|
||||||
if employee.role == "administrator"
|
|
||||||
# redirect_to dashboard_path
|
|
||||||
shift = ShiftSale.current_open_shift(employee.id)
|
|
||||||
if !shift.nil?
|
|
||||||
redirect_to origami_root_path
|
|
||||||
else
|
|
||||||
redirect_to dashboard_path
|
|
||||||
end
|
|
||||||
elsif employee.role == "cashier"
|
|
||||||
#check if cashier has existing open cashier
|
#check if cashier has existing open cashier
|
||||||
shift = ShiftSale.current_open_shift(employee.id)
|
shift = ShiftSale.current_open_shift(current_user.id)
|
||||||
if !shift.nil?
|
if !shift.nil?
|
||||||
redirect_to origami_dashboard_path
|
origami_dashboard_path
|
||||||
# redirect_to origami_root_path
|
|
||||||
else
|
else
|
||||||
redirect_to new_origami_shift_path
|
new_origami_shift_path
|
||||||
end
|
end
|
||||||
elsif employee.role == "manager"
|
elsif current_user.role == "manager"
|
||||||
redirect_to dashboard_path
|
dashboard_path
|
||||||
elsif employee.role == "waiter"
|
elsif current_user.role == "supervisor"
|
||||||
redirect_to origami_dashboard_path
|
origami_dashboard_path
|
||||||
elsif employee.role == "crm"
|
elsif current_user.role == "waiter"
|
||||||
redirect_to crm_root_path
|
origami_dashboard_path
|
||||||
elsif employee.role == "supervisor"
|
elsif current_user.role == "crm"
|
||||||
redirect_to origami_dashboard_path
|
crm_root_path
|
||||||
elsif employee.role == "account"
|
elsif current_user.role == "account"
|
||||||
redirect_to reports_dailysale_index_path
|
reports_dailysale_index_path
|
||||||
|
elsif @current_user.role == "kitchen"
|
||||||
|
oqs_root_path
|
||||||
|
else
|
||||||
|
login_path
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_date_range_from_params
|
|
||||||
if params[:from].present? && params[:to].present?
|
|
||||||
if params[:from_time].present? && params[:to_time].present?
|
|
||||||
from = Time.parse("#{params[:from]} #{params[:from_time]}")
|
|
||||||
to = Time.parse("#{params[:to]} #{params[:to_time]}")
|
|
||||||
else
|
|
||||||
from = Time.parse(params[:from])
|
|
||||||
to = Time.parse(params[:to]).end_of_day
|
|
||||||
end
|
|
||||||
else
|
|
||||||
from = Time.now.beginning_of_day
|
|
||||||
to = Time.now.end_of_day
|
|
||||||
end
|
|
||||||
return from, to
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -19,55 +19,31 @@ class InstallController < BaseController
|
|||||||
db_password = params[:db_password]
|
db_password = params[:db_password]
|
||||||
phrase = license_key
|
phrase = license_key
|
||||||
|
|
||||||
# Check Exists IV
|
|
||||||
# if flag == "<%= ENV['AES_IV'] %>"
|
|
||||||
# # Export for Key
|
|
||||||
# aes = MyAesCrypt.new
|
|
||||||
# aes_key, aes_iv = aes.export_key(phrase)
|
|
||||||
# else
|
|
||||||
# aes_key = ENV["AES_KEY"]
|
|
||||||
# aes_iv = ENV["AES_IV"]
|
|
||||||
# end
|
|
||||||
|
|
||||||
@license = License.new(ENV["SX_PROVISION_URL"], request.host)
|
@license = License.new(ENV["SX_PROVISION_URL"], request.host)
|
||||||
response = @license.license_activate(restaurant, license_key, db_host, db_schema, db_user, db_password)
|
response = @license.license_activate(restaurant, license_key, db_host, db_schema, db_user, db_password)
|
||||||
if response[:status]
|
if response[:status]
|
||||||
redirect_to root_url, notice: response["message"]
|
redirect_to root_path, notice: response["message"]
|
||||||
else
|
else
|
||||||
redirect_to activate_path, notice: response["message"]
|
redirect_to activate_path, notice: response["message"]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
def lookup_domain
|
def lookup_domain
|
||||||
if ENV["SERVER_MODE"] == "cloud"
|
if ENV["SERVER_MODE"] == "cloud"
|
||||||
not_found
|
not_found
|
||||||
elsif ENV["SERVER_MODE"] == "application"
|
elsif ENV["SERVER_MODE"] == "application" || request.subdomains.last && request.subdomains.last != "www"
|
||||||
if check_license #(request.host)
|
if current_license.exists? #(request.host)
|
||||||
redirect_to root_url
|
if current_license.expired?
|
||||||
end
|
redirect_to review_license_path
|
||||||
elsif request.subdomains.last && request.subdomains.last != "www"
|
else
|
||||||
if check_license #(request.host)
|
redirect_to root_path
|
||||||
redirect_to root_url
|
end
|
||||||
elsif !check_subdomain(request.host)
|
|
||||||
not_found
|
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
not_found
|
not_found
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# def current_license(url, key)
|
|
||||||
# @license = License.new(url, key)
|
|
||||||
|
|
||||||
# ##creating md5 hash
|
|
||||||
# md5_hostname = Digest::MD5.new
|
|
||||||
# md5key = md5_hostname.update(request.host)
|
|
||||||
# if (@license.detail_with_local_cache(key, md5key.to_s) == true)
|
|
||||||
# #if (@license.detail == true)
|
|
||||||
|
|
||||||
# return @license
|
|
||||||
# else
|
|
||||||
# return nil
|
|
||||||
# end
|
|
||||||
# end
|
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,16 +0,0 @@
|
|||||||
class RenewLicenseController < ApplicationController
|
|
||||||
|
|
||||||
def expire
|
|
||||||
@license = current_license
|
|
||||||
@plan = @license.read_license("plan_name")
|
|
||||||
@bis_name = @license.read_license_no_decrypt("shop_name")
|
|
||||||
@expired_at = @license.read_license("renewable_date")
|
|
||||||
@license_status = @license.detail_with_local_file
|
|
||||||
end
|
|
||||||
|
|
||||||
def renew
|
|
||||||
status, message = current_license.verify_license
|
|
||||||
render json: {message: message, status: status}
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
33
app/controllers/review_license_controller.rb
Normal file
33
app/controllers/review_license_controller.rb
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
class ReviewLicenseController < ApplicationController
|
||||||
|
|
||||||
|
def index
|
||||||
|
@license = current_license
|
||||||
|
@plan = @license.read_license("plan_name")
|
||||||
|
@bis_name = @license.read_license_no_decrypt("shop_name")
|
||||||
|
@expired_at = @license.read_license("renewable_date")
|
||||||
|
@license_status = @license.detail_with_local_file
|
||||||
|
end
|
||||||
|
|
||||||
|
def create
|
||||||
|
if current_license.verify_license
|
||||||
|
redirect_to root_path
|
||||||
|
else
|
||||||
|
redirect_to review_license_path, flash: { message: '*** License can not be verified ***' }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def lookup_domain
|
||||||
|
if ENV["SERVER_MODE"] == "cloud"
|
||||||
|
not_found
|
||||||
|
elsif ENV["SERVER_MODE"] == "application" || request.subdomains.last && request.subdomains.last != "www"
|
||||||
|
if !current_license.exists? #(request.host)
|
||||||
|
redirect_to activate_path
|
||||||
|
end
|
||||||
|
else
|
||||||
|
not_found
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
76
app/controllers/sessions_controller.rb
Normal file
76
app/controllers/sessions_controller.rb
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
class SessionsController < ApplicationController
|
||||||
|
skip_before_action :authenticate, only: [:index, :show, :update, :create, :destroy]
|
||||||
|
# Special check for only dashboard
|
||||||
|
|
||||||
|
def index
|
||||||
|
# @employees = Employee.all_emp_except_waiter.order("name asc")
|
||||||
|
@employees = Employee.all.where("is_active = true").order("name asc")
|
||||||
|
@roles = Employee.distinct.pluck(:role)
|
||||||
|
# byebug
|
||||||
|
# @roles = Lookup.collection_of("employee_roles")
|
||||||
|
@login_form = LoginForm.new()
|
||||||
|
render "layouts/login_dashboard", layout: false
|
||||||
|
end
|
||||||
|
|
||||||
|
def show
|
||||||
|
@login_form = LoginForm.new()
|
||||||
|
@login_form.emp_id = params[:emp_id]
|
||||||
|
render "layouts/login", layout: false
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
@login_form = LoginForm.new()
|
||||||
|
@login_form.emp_id = params[:emp_id]
|
||||||
|
@login_form.password = params[:login_form][:password]
|
||||||
|
@employee = Employee.login(@login_form.emp_id, @login_form.password)
|
||||||
|
|
||||||
|
if @employee != nil
|
||||||
|
session[:session_token] = @employee.token_session
|
||||||
|
redirect_to root_path
|
||||||
|
else
|
||||||
|
flash[:notice] = "Invalid PIN for Employee. Please try again!"
|
||||||
|
render :show
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def create
|
||||||
|
@login_form = LoginForm.new(settings_home_params)
|
||||||
|
@employee = Employee.login(@login_form.emp_id, @login_form.password)
|
||||||
|
|
||||||
|
if @employee != nil
|
||||||
|
if @employee.is_active
|
||||||
|
session[:session_token] = @employee.token_session
|
||||||
|
redirect_to root_path
|
||||||
|
else
|
||||||
|
redirect_to login_path, :notice => "This Employee is not active"
|
||||||
|
end
|
||||||
|
else
|
||||||
|
redirect_to login_path, :notice => "Username and Password doesn't match!"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def destroy
|
||||||
|
# clear in employee session
|
||||||
|
Employee.logout(session[:session_token])
|
||||||
|
session[:session_token] = nil
|
||||||
|
# redirect_to root_path
|
||||||
|
render :json => {:status=> "Success", :url => root_path }.to_json
|
||||||
|
end
|
||||||
|
|
||||||
|
def run_teamviewer
|
||||||
|
if File.directory?("/opt/teamviewer")
|
||||||
|
output = IO.popen('/opt/teamviewer/tv_bin/script/teamviewer')
|
||||||
|
render :json => {:status=> true}
|
||||||
|
else
|
||||||
|
render :json => {:status=> false}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
# Never trust parameters from the scary internet, only allow the white list through.
|
||||||
|
def settings_home_params
|
||||||
|
params.require(:login_form).permit(:emp_id, :password)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
2
app/helpers/dashboard_helper.rb
Normal file
2
app/helpers/dashboard_helper.rb
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
module DashboardHelper
|
||||||
|
end
|
||||||
2
app/helpers/sessions_helper.rb
Normal file
2
app/helpers/sessions_helper.rb
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
module SessionsHelper
|
||||||
|
end
|
||||||
@@ -151,47 +151,35 @@ class License
|
|||||||
def verify_license
|
def verify_license
|
||||||
api_token = read_license_no_decrypt("api_token")
|
api_token = read_license_no_decrypt("api_token")
|
||||||
@params = { query: {lookup_type: "application", api_token: api_token} }
|
@params = { query: {lookup_type: "application", api_token: api_token} }
|
||||||
old_renewable_date = read_license("renewable_date")
|
|
||||||
|
|
||||||
begin
|
begin
|
||||||
response = self.class.get("/verify", @params)
|
response = self.class.get("/verify", @params)
|
||||||
@varified = response.parsed_response
|
@varified = response.parsed_response
|
||||||
Rails.logger.debug "License Remote Response - " + response.parsed_response.to_s
|
Rails.logger.debug "License Remote Response - " + response.parsed_response.to_s
|
||||||
if (@varified["status"])
|
if (@varified["status"])
|
||||||
if old_renewable_date.to_date == @varified['renewable_date'].to_date
|
old_renewable_date = read_license("renewable_date")
|
||||||
message = "*** License can't be verified. ***"
|
if old_renewable_date.to_date < @varified['renewable_date'].to_date
|
||||||
status = 2
|
|
||||||
elsif old_renewable_date.to_date < @varified['renewable_date'].to_date
|
|
||||||
update_license("renewable_date", @varified['renewable_date'])
|
update_license("renewable_date", @varified['renewable_date'])
|
||||||
status = 1
|
return true
|
||||||
message = "*** License con be verified. ***"
|
|
||||||
end
|
end
|
||||||
return status, message
|
|
||||||
|
|
||||||
else
|
|
||||||
delete_license_file
|
|
||||||
|
|
||||||
stauts = 0
|
|
||||||
message = "*** Your license has been expired. ***"
|
|
||||||
return status, message
|
|
||||||
end
|
end
|
||||||
|
|
||||||
rescue SocketError => e
|
rescue SocketError => e
|
||||||
Rails.logger.debug "In SocketError No Internet connection ! "
|
Rails.logger.debug "In SocketError No Internet connection ! "
|
||||||
return true
|
|
||||||
rescue HTTParty::Error
|
rescue HTTParty::Error
|
||||||
Rails.logger.debug "Server Error HTTParty"
|
Rails.logger.debug "Server Error HTTParty"
|
||||||
return true
|
|
||||||
rescue Net::OpenTimeout
|
rescue Net::OpenTimeout
|
||||||
Rails.logger.debug "connection Timeout"
|
Rails.logger.debug "connection Timeout"
|
||||||
return true
|
|
||||||
rescue OpenURI::HTTPError
|
rescue OpenURI::HTTPError
|
||||||
Rails.logger.debug "Can't connect server"
|
Rails.logger.debug "Can't connect server"
|
||||||
return true
|
|
||||||
end
|
end
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def exists?
|
||||||
|
License.check_license_file(lookup)
|
||||||
|
end
|
||||||
|
|
||||||
def expired?
|
def expired?
|
||||||
if renewal_date_str = read_license("renewable_date")
|
if renewal_date_str = read_license("renewable_date")
|
||||||
renewal_date = DateTime.parse(renewal_date_str)
|
renewal_date = DateTime.parse(renewal_date_str)
|
||||||
@@ -234,6 +222,7 @@ class License
|
|||||||
params = { query: { lookup_type: "cloud", lookup: lookup, iv_key: aes_iv} }
|
params = { query: { lookup_type: "cloud", lookup: lookup, iv_key: aes_iv} }
|
||||||
response = self.class.get("/subdomain", params)
|
response = self.class.get("/subdomain", params)
|
||||||
response.parsed_response["status"]
|
response.parsed_response["status"]
|
||||||
|
rescue
|
||||||
end
|
end
|
||||||
|
|
||||||
# Check License File exists
|
# Check License File exists
|
||||||
@@ -241,15 +230,21 @@ class License
|
|||||||
return unless File.exist?("config/license.yml")
|
return unless File.exist?("config/license.yml")
|
||||||
if license = YAML.load_file("config/license.yml")
|
if license = YAML.load_file("config/license.yml")
|
||||||
if license[lookup].nil?
|
if license[lookup].nil?
|
||||||
if ENV["SERVER_MODE"] == "application"
|
|
||||||
license[lookup] = license.values.first
|
if license['iv_key']
|
||||||
|
license = { lookup => license }
|
||||||
else
|
else
|
||||||
tld_length = Rails.application.config.action_dispatch.tld_length
|
tld_length = Rails.application.config.action_dispatch.tld_length
|
||||||
subdomains = URL.extract_subdomains(lookup, tld_length)
|
subdomains = URL.extract_subdomains(lookup, tld_length)
|
||||||
if key = license.keys.find { |k| URL.extract_subdomains(k, tld_length).last == subdomains.last}
|
if subdomains.last && subdomains.last != 'www'
|
||||||
license[lookup] = license[key]
|
if key = license.keys.find { |k| URL.extract_subdomains(k, tld_length).last == subdomains.last}
|
||||||
|
license[lookup] = license[key]
|
||||||
|
end
|
||||||
|
else
|
||||||
|
license[lookup] = license.values.first
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if license[lookup]
|
if license[lookup]
|
||||||
File.open("config/license.yml", "w") { |file| file.write license.to_yaml }
|
File.open("config/license.yml", "w") { |file| file.write license.to_yaml }
|
||||||
end
|
end
|
||||||
@@ -260,9 +255,8 @@ class License
|
|||||||
|
|
||||||
# read line by key for license file
|
# read line by key for license file
|
||||||
def read_license(key_name)
|
def read_license(key_name)
|
||||||
key, iv = get_redis_key()
|
|
||||||
|
|
||||||
if File.exist?("config/license.yml")
|
if File.exist?("config/license.yml")
|
||||||
|
key, iv = get_redis_key()
|
||||||
if license = YAML.load(File.read("config/license.yml"))
|
if license = YAML.load(File.read("config/license.yml"))
|
||||||
if license[lookup]
|
if license[lookup]
|
||||||
AESCrypt.decrypt_data(decode_str(license[lookup][key_name]), decode_str(key), decode_str(iv), ENV['CIPHER_TYPE'])
|
AESCrypt.decrypt_data(decode_str(license[lookup][key_name]), decode_str(key), decode_str(iv), ENV['CIPHER_TYPE'])
|
||||||
@@ -284,13 +278,12 @@ class License
|
|||||||
|
|
||||||
# Update license file for line
|
# Update license file for line
|
||||||
def update_license(content, new_content)
|
def update_license(content, new_content)
|
||||||
key, iv = get_redis_key()
|
|
||||||
|
|
||||||
if !new_content.include? "=="
|
|
||||||
crypted_str = AESCrypt.encrypt_data(new_content, decode_str(key), decode_str(iv), ENV['CIPHER_TYPE'])
|
|
||||||
end
|
|
||||||
|
|
||||||
if File.exist?("config/license.yml")
|
if File.exist?("config/license.yml")
|
||||||
|
key, iv = get_redis_key()
|
||||||
|
|
||||||
|
if !new_content.include? "=="
|
||||||
|
crypted_str = AESCrypt.encrypt_data(new_content, decode_str(key), decode_str(iv), ENV['CIPHER_TYPE'])
|
||||||
|
end
|
||||||
if license = YAML.load_file("config/license.yml")
|
if license = YAML.load_file("config/license.yml")
|
||||||
license[lookup][content] = encode_str(crypted_str)
|
license[lookup][content] = encode_str(crypted_str)
|
||||||
|
|
||||||
|
|||||||
@@ -349,6 +349,7 @@
|
|||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
|
<% if current_user.role == 'administrator' || current_user.role == 'manager' || current_user.role == 'account' %>
|
||||||
<% if isMobile.include? "Mobile" %>
|
<% if isMobile.include? "Mobile" %>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xs-12 col-sm-12 col-md-6 col-lg-6 ">
|
<div class="col-xs-12 col-sm-12 col-md-6 col-lg-6 ">
|
||||||
@@ -371,6 +372,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
@@ -10,34 +10,34 @@
|
|||||||
<%= csrf_meta_tags %>
|
<%= csrf_meta_tags %>
|
||||||
|
|
||||||
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
|
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
.page {
|
.page {
|
||||||
padding-left: 0;
|
padding-left: 0;
|
||||||
max-width: 80%;
|
max-width: 80%;
|
||||||
margin: 2% auto;
|
margin: 2% auto;
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
background-color: #2790a5;
|
background-color: #2790a5;
|
||||||
}
|
}
|
||||||
|
|
||||||
.page .box {
|
.page .box {
|
||||||
display: block;
|
display: block;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
color: #000;
|
color: #000;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="page">
|
<body class="page">
|
||||||
<% flash.each do |type, message| %>
|
<% flash.each do |type, message| %>
|
||||||
<% if type == "notice"
|
<% if type == "notice"
|
||||||
color = "alert-success"
|
color = "alert-success"
|
||||||
elsif type == "error"
|
elsif type == "error"
|
||||||
color = "alert-danger"
|
color = "alert-danger"
|
||||||
else
|
else
|
||||||
color = "bg-black"
|
color = "bg-black"
|
||||||
end %>
|
end %>
|
||||||
|
|
||||||
<p id="notify_message" class="hidden" data-placement-from="top" data-message="<%=message%>" data-placement-align="center"
|
<p id="notify_message" class="hidden" data-placement-from="top" data-message="<%=message%>" data-placement-align="center"
|
||||||
data-animate-enter="" data-animate-exit="" data-color-name="<%=color%>" >
|
data-animate-enter="" data-animate-exit="" data-color-name="<%=color%>" >
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
@@ -2,16 +2,11 @@
|
|||||||
<% date_count = (renewable_date.to_date - Date.today).to_i %>
|
<% date_count = (renewable_date.to_date - Date.today).to_i %>
|
||||||
<% day = pluralize( date_count, 'day' )%>
|
<% day = pluralize( date_count, 'day' )%>
|
||||||
|
|
||||||
<% if @license_status == 0
|
<% if @license_status == 0 %>
|
||||||
text = 'Your license has been expired.'
|
<% text = 'Your license has been expired.' %>
|
||||||
elsif @license_status == 2
|
<% else %>
|
||||||
if date_count == 0
|
<% text = "Your license will expire in #{day}." %>
|
||||||
text = "Your license will expire in tomorrow."
|
<% end %>
|
||||||
else
|
|
||||||
text = "Your license will expire in #{day}."
|
|
||||||
end
|
|
||||||
end
|
|
||||||
%>
|
|
||||||
<style>
|
<style>
|
||||||
.centered {
|
.centered {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
@@ -29,13 +24,16 @@
|
|||||||
<div class="col-sm-2"></div>
|
<div class="col-sm-2"></div>
|
||||||
<div class="card col-sm-8 centered">
|
<div class="card col-sm-8 centered">
|
||||||
<div class="card-block">
|
<div class="card-block">
|
||||||
<h3 class="pt-2 d-inline">Review Your License</h3>
|
|
||||||
<%= link_to origami_dashboard_url do %>
|
<%= link_to origami_dashboard_url do %>
|
||||||
<img src="/image/logo.png" style="margin-left: 25pc; width: 140px">
|
<img src="/image/logo.png" class="mr-4 mt-2 float-right" style="width: 150px">
|
||||||
<% end %>
|
<% end %>
|
||||||
<p class="m-t--30" id="warning_text" style="font-weight: bold; font-size: 18px;"></p><br>
|
<h3 class="mt-4 mb-4">Review Your License</h3>
|
||||||
|
<% if flash[:message].present? %>
|
||||||
|
<p class="text-danger" style="font-weight: bold; font-size: 18px;"><%= flash[:message] %></p>
|
||||||
|
<% end %>
|
||||||
|
<br>
|
||||||
<% if text %>
|
<% if text %>
|
||||||
<h6 class="mb-2 "><%= text %></h6><br>
|
<h6 class="mb-2"><%= text %></h6><br>
|
||||||
<% end %>
|
<% end %>
|
||||||
<h6 class="mb-2">Call Center Phone No: <a href="tel:+6494461709">+959 445 665 311</a></h6>
|
<h6 class="mb-2">Call Center Phone No: <a href="tel:+6494461709">+959 445 665 311</a></h6>
|
||||||
<br>
|
<br>
|
||||||
@@ -59,11 +57,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<br>
|
<br>
|
||||||
<div class="col-md-12" style="padding-bottom: 20px;">
|
<div class="col-md-12 mb-2">
|
||||||
<button type="button" class="btn btn-primary btn-lg float-right m-l-10 m-r-5" id="review_license">
|
<%= form_with url: review_license_url, local: true do %>
|
||||||
Review License
|
<%= submit_tag 'Review Licese', class: 'btn btn-primary btn-lg float-right m-l-10 m-r-5' %>
|
||||||
</button>
|
<%= link_to 'Go To Home', root_url, class: 'btn btn-default btn-lg float-right' %>
|
||||||
<%= link_to 'Go To Home', origami_dashboard_url, class: 'btn btn-default btn-lg float-right', id: 'go_to_home' %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-2"></div>
|
<div class="col-sm-2"></div>
|
||||||
@@ -72,28 +70,9 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
$('.alert-danger, .navbar, #warning_text').hide()
|
$('.alert-danger, .navbar').hide()
|
||||||
$('html, section').css('background-color', '#61B8C9')
|
$('html, section').css('background-color', '#61B8C9')
|
||||||
|
// $('html').css('overflow-x', 'hidden')
|
||||||
$('section.content').css('margin', '70px 0 0 0')
|
$('section.content').css('margin', '70px 0 0 0')
|
||||||
|
|
||||||
$('#review_license').on ('click', function() {
|
|
||||||
$.ajax({
|
|
||||||
url: '/renew',
|
|
||||||
type: 'POST',
|
|
||||||
success: function(res) {
|
|
||||||
if (res.message.length != 0) {
|
|
||||||
if (res.status == 1) {
|
|
||||||
color = 'text-success'
|
|
||||||
} else if (res.status == 2) {
|
|
||||||
color = 'text-danger'
|
|
||||||
} else {
|
|
||||||
color = 'text-danger'
|
|
||||||
$('#go_to_home').hide()
|
|
||||||
}
|
|
||||||
$('#warning_text').addClass(color).text(res.message).show()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
<% if license_status == 0 || license_status == 2 %>
|
<% if license_status == 0 || license_status == 2 %>
|
||||||
<div id="license-alert" class="alert alert-danger fade show text-center" role="alert">
|
<div id="license-alert" class="alert alert-danger fade show text-center" role="alert">
|
||||||
<strong style="margin-left: 40px !important"><%= text %></strong>
|
<strong style="margin-left: 40px !important"><%= text %></strong>
|
||||||
<%= link_to 'Review License', expire_url, class: 'btn btn-sm btn-primary', style: "margin-left: 20px !important"%>
|
<%= link_to 'Review License', review_license_url, class: 'btn btn-sm btn-primary', style: "margin-left: 20px !important"%>
|
||||||
<button type="button" class="close btn-close" data-dismiss="alert" aria-label="Close" style="padding-top: 5px;">
|
<button type="button" class="close btn-close" data-dismiss="alert" aria-label="Close" style="padding-top: 5px;">
|
||||||
<span aria-hidden="true" class="text-white">×</span>
|
<span aria-hidden="true" class="text-white">×</span>
|
||||||
</button>
|
</button>
|
||||||
@@ -30,8 +30,8 @@
|
|||||||
navbar = $('.navbar');
|
navbar = $('.navbar');
|
||||||
leftsidebar = $('#leftsidebar');
|
leftsidebar = $('#leftsidebar');
|
||||||
if (<%= license_status %> == 1) {
|
if (<%= license_status %> == 1) {
|
||||||
navbar.css("top", 0);
|
navbar.css("top", "");
|
||||||
leftsidebar.css("top", 0);
|
leftsidebar.css("top", "");
|
||||||
$('section.content').css('margin-top', '0 !important');
|
$('section.content').css('margin-top', '0 !important');
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
class ActionController::Base
|
class ActionController::Base
|
||||||
before_action :lookup_domain if Rails.env.production?
|
before_action :lookup_domain
|
||||||
before_action :set_locale
|
before_action :set_locale
|
||||||
|
|
||||||
helper_method :current_license,
|
helper_method :current_license,
|
||||||
@@ -25,12 +25,10 @@ class ActionController::Base
|
|||||||
end
|
end
|
||||||
elsif ENV["SERVER_MODE"] == "application" || request.subdomains.last && request.subdomains.last != "www"
|
elsif ENV["SERVER_MODE"] == "application" || request.subdomains.last && request.subdomains.last != "www"
|
||||||
# check for license file
|
# check for license file
|
||||||
if !check_license
|
if !current_license.exists?
|
||||||
if ENV["SERVER_MODE"] == "application" || check_subdomain
|
redirect_to activate_path
|
||||||
redirect_to activate_path
|
elsif current_license.expired?
|
||||||
else
|
redirect_to review_license_path
|
||||||
not_found
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
not_found
|
not_found
|
||||||
@@ -53,15 +51,6 @@ class ActionController::Base
|
|||||||
current_license.check_license_subdomain
|
current_license.check_license_subdomain
|
||||||
end
|
end
|
||||||
|
|
||||||
def check_license
|
|
||||||
if License.check_license_file(request.host)
|
|
||||||
if current_license.expired?
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def check_installation
|
def check_installation
|
||||||
if current_company.nil?
|
if current_company.nil?
|
||||||
redirect_to install_path
|
redirect_to install_path
|
||||||
@@ -117,7 +106,7 @@ class ActionController::API
|
|||||||
not_found
|
not_found
|
||||||
end
|
end
|
||||||
elsif ENV["SERVER_MODE"] == "application" || (request.subdomains.last && request.subdomains.last != "www")
|
elsif ENV["SERVER_MODE"] == "application" || (request.subdomains.last && request.subdomains.last != "www")
|
||||||
not_found unless check_license
|
not_found unless current_license.exists? && !current_license.expired?
|
||||||
else
|
else
|
||||||
not_found
|
not_found
|
||||||
end
|
end
|
||||||
@@ -135,15 +124,6 @@ class ActionController::API
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def check_license
|
|
||||||
if License.check_license_file(request.host)
|
|
||||||
if current_license.expired?
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def website_connection(license)
|
def website_connection(license)
|
||||||
default_connection.dup.update(:host => license.dbhost, :database => license.dbschema.to_s.downcase,
|
default_connection.dup.update(:host => license.dbhost, :database => license.dbschema.to_s.downcase,
|
||||||
:username => license.dbusername, :password => license.dbpassword)
|
:username => license.dbusername, :password => license.dbpassword)
|
||||||
|
|||||||
@@ -22,15 +22,17 @@ scope "(:locale)", locale: /en|mm/ do
|
|||||||
get 'get_key' => 'sym_control#get_key'
|
get 'get_key' => 'sym_control#get_key'
|
||||||
|
|
||||||
#--------- Login/Authentication ------------#
|
#--------- Login/Authentication ------------#
|
||||||
get 'auth/:emp_id' => 'home#show', as: :emp_login
|
get 'login' => 'sessions#index'
|
||||||
patch "auth/:emp_id" => 'home#update', as: :emp_login_update
|
get 'auth/:emp_id' => 'sessions#show', as: :emp_login
|
||||||
|
patch "auth/:emp_id" => 'sessions#update', as: :emp_login_update
|
||||||
|
|
||||||
post 'login' => 'home#create'
|
post 'login' => 'sessions#create'
|
||||||
delete 'logout' => 'home#destroy'
|
delete 'logout' => 'sessions#destroy'
|
||||||
get 'dashboard' => 'home#dashboard'
|
|
||||||
|
|
||||||
get 'expire' => 'renew_license#expire'
|
get 'review_license' => 'review_license#index'
|
||||||
post 'renew' => 'renew_license#renew'
|
post 'review_license' => 'review_license#create'
|
||||||
|
|
||||||
|
get 'dashboard' => 'dashboard#index'
|
||||||
|
|
||||||
namespace :induties do
|
namespace :induties do
|
||||||
# resources :assign_in_duties
|
# resources :assign_in_duties
|
||||||
|
|||||||
5
spec/controllers/dashboard_controller_spec.rb
Normal file
5
spec/controllers/dashboard_controller_spec.rb
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe DashboardController, type: :controller do
|
||||||
|
|
||||||
|
end
|
||||||
5
spec/controllers/sessions_controller_spec.rb
Normal file
5
spec/controllers/sessions_controller_spec.rb
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe SessionsController, type: :controller do
|
||||||
|
|
||||||
|
end
|
||||||
15
spec/helpers/dashboard_helper_spec.rb
Normal file
15
spec/helpers/dashboard_helper_spec.rb
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
# Specs in this file have access to a helper object that includes
|
||||||
|
# the DashboardHelper. For example:
|
||||||
|
#
|
||||||
|
# describe DashboardHelper do
|
||||||
|
# describe "string concat" do
|
||||||
|
# it "concats two strings with spaces" do
|
||||||
|
# expect(helper.concat_strings("this","that")).to eq("this that")
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
RSpec.describe DashboardHelper, type: :helper do
|
||||||
|
pending "add some examples to (or delete) #{__FILE__}"
|
||||||
|
end
|
||||||
15
spec/helpers/sessions_helper_spec.rb
Normal file
15
spec/helpers/sessions_helper_spec.rb
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
# Specs in this file have access to a helper object that includes
|
||||||
|
# the SessionsHelper. For example:
|
||||||
|
#
|
||||||
|
# describe SessionsHelper do
|
||||||
|
# describe "string concat" do
|
||||||
|
# it "concats two strings with spaces" do
|
||||||
|
# expect(helper.concat_strings("this","that")).to eq("this that")
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
RSpec.describe SessionsHelper, type: :helper do
|
||||||
|
pending "add some examples to (or delete) #{__FILE__}"
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user