application_controller.rb - warvox - VoIP based wardialing tool, forked from rapid7/warvox.
(HTM) git clone git://jay.scot/warvox
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
---
application_controller.rb (1671B)
---
1 class ApplicationController < ActionController::Base
2 protect_from_forgery with: :exception
3 helper :all
4
5 helper_method :current_user_session, :current_user
6 before_action :require_user, :load_project
7 add_breadcrumb :projects, :root_path
8
9 include ActionView::Helpers::NumberHelper
10
11 private
12
13 def current_user_session
14 return @current_user_session if defined?(@current_user_session)
15 @current_user_session = UserSession.find
16 end
17
18 def current_user
19 return @current_user if defined?(@current_user)
20 @current_user = current_user_session && current_user_session.record
21 end
22
23 def require_user
24 unless current_user
25 store_location
26 flash.now[:notice] = "You must be logged in to access this page"
27 redirect_to '/login'
28 return false
29 end
30 end
31
32 def require_no_user
33 if current_user
34 store_location
35 flash[:notice] = "You must be logged out to access this page"
36 redirect_to user_path(current_user)
37 return false
38 end
39 end
40
41 def store_location
42 session[:return_to] = request.fullpath
43 end
44
45 def redirect_back_or_default(default)
46 redirect_to(session[:return_to] || default)
47 session[:return_to] = nil
48 end
49
50 def load_project
51 # Only load this when we are logged in
52 return true unless current_user
53
54 if params[:project_id]
55 @project = Project.where(id: params[:project_id].to_i).first
56 elsif session[:project_id]
57 @project = Project.where(id: session[:project_id].to_i).first
58 end
59
60 if @project and @project.id and not (session[:project_id] and session[:project_id] == @project.id)
61 session[:project_id] = @project.id
62 end
63
64 true
65 end
66
67
68 end