diff --git a/app/assets/javascripts/dashboard.coffee b/app/assets/javascripts/dashboard.coffee new file mode 100644 index 00000000..24f83d18 --- /dev/null +++ b/app/assets/javascripts/dashboard.coffee @@ -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/ diff --git a/app/assets/javascripts/sessions.coffee b/app/assets/javascripts/sessions.coffee new file mode 100644 index 00000000..24f83d18 --- /dev/null +++ b/app/assets/javascripts/sessions.coffee @@ -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/ diff --git a/app/assets/stylesheets/dashboard.scss b/app/assets/stylesheets/dashboard.scss new file mode 100644 index 00000000..3a51a8cf --- /dev/null +++ b/app/assets/stylesheets/dashboard.scss @@ -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/ diff --git a/app/assets/stylesheets/sessions.scss b/app/assets/stylesheets/sessions.scss new file mode 100644 index 00000000..7bef9cf8 --- /dev/null +++ b/app/assets/stylesheets/sessions.scss @@ -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/ diff --git a/app/controllers/concerns/login_verification.rb b/app/controllers/concerns/login_verification.rb index b1102171..163ecf96 100755 --- a/app/controllers/concerns/login_verification.rb +++ b/app/controllers/concerns/login_verification.rb @@ -2,7 +2,8 @@ module LoginVerification extend ActiveSupport::Concern 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 end @@ -86,7 +87,7 @@ module LoginVerification token = session[:session_token] if (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) if @user @@ -97,6 +98,6 @@ module LoginVerification end def render_unauthorized - redirect_to root_path + redirect_to login_path end end diff --git a/app/controllers/concerns/multi_tenancy.rb b/app/controllers/concerns/multi_tenancy.rb index cb7c8aae..4fe114a0 100644 --- a/app/controllers/concerns/multi_tenancy.rb +++ b/app/controllers/concerns/multi_tenancy.rb @@ -3,17 +3,32 @@ module MultiTenancy included do 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 private - def find_shop_by_subdomain_or_frist - if request.subdomain.present? - shop_code = request.subdomain.partition('-').last - shop = Shop.find_by(shop_code: shop_code) - else - shop = Shop.first + def set_current_tenant_by_subdomain_or_name + find_tenant_by_subdomain_or_name || not_found + end + + def find_tenant_by_subdomain_or_name + 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 - 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 diff --git a/app/controllers/dashboard_controller.rb b/app/controllers/dashboard_controller.rb new file mode 100644 index 00000000..54a64584 --- /dev/null +++ b/app/controllers/dashboard_controller.rb @@ -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 diff --git a/app/controllers/home_controller.rb b/app/controllers/home_controller.rb index 2665a330..4f161fb4 100755 --- a/app/controllers/home_controller.rb +++ b/app/controllers/home_controller.rb @@ -1,234 +1,37 @@ 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 - # @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 + redirect_to route_by_role end - def show - @login_form = LoginForm.new() - @login_form.emp_id = params[:emp_id] - render "layouts/login", layout: false - end +private - 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 - 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" + def route_by_role + if current_user.role == "administrator" + dashboard_path + elsif current_user.role == "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? - redirect_to origami_dashboard_path - # redirect_to origami_root_path + origami_dashboard_path else - redirect_to new_origami_shift_path + new_origami_shift_path end - elsif employee.role == "manager" - redirect_to dashboard_path - elsif employee.role == "waiter" - redirect_to origami_dashboard_path - elsif employee.role == "crm" - redirect_to crm_root_path - elsif employee.role == "supervisor" - redirect_to origami_dashboard_path - elsif employee.role == "account" - redirect_to reports_dailysale_index_path + elsif current_user.role == "manager" + dashboard_path + elsif current_user.role == "supervisor" + origami_dashboard_path + elsif current_user.role == "waiter" + origami_dashboard_path + elsif current_user.role == "crm" + crm_root_path + elsif current_user.role == "account" + reports_dailysale_index_path + elsif @current_user.role == "kitchen" + oqs_root_path + else + login_path 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 diff --git a/app/controllers/install_controller.rb b/app/controllers/install_controller.rb index 594c99ea..0108aec0 100755 --- a/app/controllers/install_controller.rb +++ b/app/controllers/install_controller.rb @@ -19,55 +19,31 @@ class InstallController < BaseController db_password = params[:db_password] 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) response = @license.license_activate(restaurant, license_key, db_host, db_schema, db_user, db_password) if response[:status] - redirect_to root_url, notice: response["message"] + redirect_to root_path, notice: response["message"] else redirect_to activate_path, notice: response["message"] end end +private + def lookup_domain if ENV["SERVER_MODE"] == "cloud" not_found - elsif ENV["SERVER_MODE"] == "application" - if check_license #(request.host) - redirect_to root_url - end - elsif request.subdomains.last && request.subdomains.last != "www" - if check_license #(request.host) - redirect_to root_url - elsif !check_subdomain(request.host) - not_found + elsif ENV["SERVER_MODE"] == "application" || request.subdomains.last && request.subdomains.last != "www" + if current_license.exists? #(request.host) + if current_license.expired? + redirect_to review_license_path + else + redirect_to root_path + end end else not_found 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 diff --git a/app/controllers/renew_license_controller.rb b/app/controllers/renew_license_controller.rb deleted file mode 100644 index 04b0b3bc..00000000 --- a/app/controllers/renew_license_controller.rb +++ /dev/null @@ -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 diff --git a/app/controllers/review_license_controller.rb b/app/controllers/review_license_controller.rb new file mode 100644 index 00000000..99fd900f --- /dev/null +++ b/app/controllers/review_license_controller.rb @@ -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 diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb new file mode 100644 index 00000000..0f6d26d4 --- /dev/null +++ b/app/controllers/sessions_controller.rb @@ -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 diff --git a/app/helpers/dashboard_helper.rb b/app/helpers/dashboard_helper.rb new file mode 100644 index 00000000..a94ddfc2 --- /dev/null +++ b/app/helpers/dashboard_helper.rb @@ -0,0 +1,2 @@ +module DashboardHelper +end diff --git a/app/helpers/sessions_helper.rb b/app/helpers/sessions_helper.rb new file mode 100644 index 00000000..309f8b2e --- /dev/null +++ b/app/helpers/sessions_helper.rb @@ -0,0 +1,2 @@ +module SessionsHelper +end diff --git a/app/models/license.rb b/app/models/license.rb index a9f8d356..36585285 100755 --- a/app/models/license.rb +++ b/app/models/license.rb @@ -151,47 +151,35 @@ class License def verify_license api_token = read_license_no_decrypt("api_token") @params = { query: {lookup_type: "application", api_token: api_token} } - old_renewable_date = read_license("renewable_date") begin response = self.class.get("/verify", @params) @varified = response.parsed_response Rails.logger.debug "License Remote Response - " + response.parsed_response.to_s if (@varified["status"]) - if old_renewable_date.to_date == @varified['renewable_date'].to_date - message = "*** License can't be verified. ***" - status = 2 - elsif old_renewable_date.to_date < @varified['renewable_date'].to_date + old_renewable_date = read_license("renewable_date") + if old_renewable_date.to_date < @varified['renewable_date'].to_date update_license("renewable_date", @varified['renewable_date']) - status = 1 - message = "*** License con be verified. ***" + return true end - return status, message - - else - delete_license_file - - stauts = 0 - message = "*** Your license has been expired. ***" - return status, message end rescue SocketError => e Rails.logger.debug "In SocketError No Internet connection ! " - return true rescue HTTParty::Error Rails.logger.debug "Server Error HTTParty" - return true rescue Net::OpenTimeout Rails.logger.debug "connection Timeout" - return true rescue OpenURI::HTTPError Rails.logger.debug "Can't connect server" - return true end return false end + def exists? + License.check_license_file(lookup) + end + def expired? if renewal_date_str = read_license("renewable_date") renewal_date = DateTime.parse(renewal_date_str) @@ -234,6 +222,7 @@ class License params = { query: { lookup_type: "cloud", lookup: lookup, iv_key: aes_iv} } response = self.class.get("/subdomain", params) response.parsed_response["status"] + rescue end # Check License File exists @@ -241,15 +230,21 @@ class License return unless File.exist?("config/license.yml") if license = YAML.load_file("config/license.yml") if license[lookup].nil? - if ENV["SERVER_MODE"] == "application" - license[lookup] = license.values.first + + if license['iv_key'] + license = { lookup => license } else tld_length = Rails.application.config.action_dispatch.tld_length subdomains = URL.extract_subdomains(lookup, tld_length) - if key = license.keys.find { |k| URL.extract_subdomains(k, tld_length).last == subdomains.last} - license[lookup] = license[key] + if subdomains.last && subdomains.last != 'www' + 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 + if license[lookup] File.open("config/license.yml", "w") { |file| file.write license.to_yaml } end @@ -260,9 +255,8 @@ class License # read line by key for license file def read_license(key_name) - key, iv = get_redis_key() - if File.exist?("config/license.yml") + key, iv = get_redis_key() if license = YAML.load(File.read("config/license.yml")) if license[lookup] 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 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") + 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") license[lookup][content] = encode_str(crypted_str) diff --git a/app/views/home/dashboard.html.erb b/app/views/dashboard/index.html.erb similarity index 99% rename from app/views/home/dashboard.html.erb rename to app/views/dashboard/index.html.erb index e77cee9d..46e5f81e 100755 --- a/app/views/home/dashboard.html.erb +++ b/app/views/dashboard/index.html.erb @@ -349,6 +349,7 @@ <% end %> <% end %> + <% if current_user.role == 'administrator' || current_user.role == 'manager' || current_user.role == 'account' %> <% if isMobile.include? "Mobile" %>
@@ -371,6 +372,7 @@
<% end %> + <% end %> diff --git a/app/views/home/create.html.erb b/app/views/sessions/create.html.erb similarity index 100% rename from app/views/home/create.html.erb rename to app/views/sessions/create.html.erb diff --git a/app/views/home/destroy.html.erb b/app/views/sessions/destroy.html.erb similarity index 100% rename from app/views/home/destroy.html.erb rename to app/views/sessions/destroy.html.erb diff --git a/app/views/home/index-old.html.erb b/app/views/sessions/index-old.html.erb similarity index 100% rename from app/views/home/index-old.html.erb rename to app/views/sessions/index-old.html.erb diff --git a/app/views/home/index.html.erb b/app/views/sessions/index.html.erb similarity index 100% rename from app/views/home/index.html.erb rename to app/views/sessions/index.html.erb diff --git a/app/views/home/index_backup.html.erb b/app/views/sessions/index_backup.html.erb similarity index 100% rename from app/views/home/index_backup.html.erb rename to app/views/sessions/index_backup.html.erb diff --git a/app/views/home/show.html.erb b/app/views/sessions/show.html.erb similarity index 100% rename from app/views/home/show.html.erb rename to app/views/sessions/show.html.erb diff --git a/app/views/shared/_license_expire_warning.html.erb b/app/views/shared/_license_expire_warning.html.erb index 815905e0..4a9ea8ef 100644 --- a/app/views/shared/_license_expire_warning.html.erb +++ b/app/views/shared/_license_expire_warning.html.erb @@ -16,7 +16,7 @@ <% if license_status == 0 || license_status == 2 %>