Completed
Push — master ( aa6241...8ade87 )
by Jean-Christophe
02:11
created

AuthController::badLogin()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 5

Duplication

Lines 6
Ratio 100 %

Importance

Changes 0
Metric Value
dl 6
loc 6
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 5
nc 1
nop 0
1
<?php
2
namespace Ubiquity\controllers\auth;
3
4
use Ubiquity\utils\http\USession;
5
use Ubiquity\utils\http\URequest;
6
use Ubiquity\utils\flash\FlashMessage;
7
use Ubiquity\controllers\ControllerBase;
8
use Ubiquity\controllers\Auth\AuthFiles;
9
use Ubiquity\cache\ClassUtils;
10
11
 /**
12
 * Controller Auth
13
 * @property \Ajax\php\ubiquity\JsUtils $jquery
14
 **/
15
abstract class AuthController extends ControllerBase{
16
	/**
17
	 * @var AuthFiles
18
	 */
19
	protected $authFiles;
20
	
21
	public function index(){
22
		$this->authLoadView($this->_getFiles()->getViewIndex(),["action"=>$this->_getBaseRoute()."/connect"]);
23
	}
24
	
25
	/**
26
	 * To override
27
	 * Return the base route for this Auth controller
28
	 * @return string
29
	 */
30
	public function _getBaseRoute(){
31
		return ClassUtils::getClassSimpleName(get_class($this));
32
	}
33
	/**
34
	 * {@inheritDoc}
35
	 * @see \controllers\ControllerBase::isValid()
36
	 */
37
	public final function isValid() {
0 ignored issues
show
Coding Style introduced by
As per PSR2, final should precede the visibility keyword.
Loading history...
38
		return true;
39
	}
40
	
41
	/**
42
	 * Action called when the user does not have access rights to a requested resource
43
	 * @param array $urlParts
44
	 */
45
	public function noAccess($urlParts){
46
		USession::set("urlParts", $urlParts);
47
		$fMessage=new FlashMessage("You are not authorized to access the page <b>".implode("/",$urlParts)."</b> !","Forbidden access","error","warning circle");
48
		$this->noAccessMessage($fMessage);
49
		$message=$this->fMessage($fMessage);		
50
		$this->authLoadView($this->_getFiles()->getViewNoAccess(),["_message"=>$message,"authURL"=>$this->_getBaseRoute()]);
51
	}
52
	
53
	/**
54
	 * Override for modifying the noAccess message
55
	 * @param FlashMessage $fMessage
56
	 */
57
	protected function noAccessMessage(FlashMessage $fMessage){
58
		
59
	}
60
	
61
	/**
62
	 * Override to implement the complete connection procedure 
63
	 */
64
	public function connect(){
65
		if(URequest::isPost()){
66
			if($connected=$this->_connect()){
67
				$this->onConnect($connected);
68
			}else{
69
				$this->onBadCreditentials();
70
			}
71
		}
72
	}
73
	
74
	/**
75
	 * Processes the data posted by the login form
76
	 * Have to return the connected user instance
77
	 */
78
	abstract protected function _connect();
79
	
80
	/**
81
	 * @param object $connected
82
	 */
83
	abstract protected function onConnect($connected);
84
	
85
	/**
86
	 * To override for defining a new action when creditentials are invalid
87
	 */
88
	protected function onBadCreditentials(){
89
		$this->badLogin();
90
	}
91
	
92
	/**
93
	 * Default Action for invalid creditentials
94
	 */
95 View Code Duplication
	public function badLogin(){
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
96
		$fMessage=new FlashMessage("Invalid creditentials!","Connection problem","warning","warning circle");
97
		$this->badLoginMessage($fMessage);
98
		$message=$this->fMessage($fMessage);
99
		$this->authLoadView($this->_getFiles()->getViewNoAccess(),["_message"=>$message,"authURL"=>$this->_getBaseRoute()]);
100
	}
101
	
102
	/**
103
	 * To override for modifying the bad login message
104
	 * @param FlashMessage $fMessage
105
	 */
106
	protected function badLoginMessage(FlashMessage $fMessage){
107
		
108
	}
109
	
110
	private function authLoadView($viewName,$vars=[]){
111
		$files=$this->_getFiles();
112
		$mainTemplate=$files->getBaseTemplate();
1 ignored issue
show
Bug introduced by
Are you sure the assignment to $mainTemplate is correct as $files->getBaseTemplate() (which targets Ubiquity\controllers\Aut...iles::getBaseTemplate()) seems to always return null.

This check looks for function or method calls that always return null and whose return value is assigned to a variable.

class A
{
    function getObject()
    {
        return null;
    }

}

$a = new A();
$object = $a->getObject();

The method getObject() can return nothing but null, so it makes no sense to assign that value to a variable.

The reason is most likely that a function or method is imcomplete or has been reduced for debug purposes.

Loading history...
113
		if(isset($mainTemplate)){
114
			$vars["_viewname"]=$viewName;
115
			$vars["_base"]=$mainTemplate;
116
			$this->loadView($files->getViewBaseTemplate(),$vars);
117
		}else{
118
			$this->loadView($viewName,$vars);
119
		}
120
	}
121
	
122
	/**
123
	 * Logout action
124
	 * Terminate the session and display a logout message
125
	 */
126 View Code Duplication
	public function terminate(){
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
127
		USession::terminate();
128
		$fMessage=new FlashMessage("You have been properly disconnected!","Logout","success","checkmark");
129
		$this->terminateMessage($fMessage);
130
		$message=$this->fMessage($fMessage);
131
		$this->authLoadView($this->_getFiles()->getViewNoAccess(),["_message"=>$message,"authURL"=>$this->_getBaseRoute()]);
132
	}
133
	
134
	/**
135
	 * To override for modifying the logout message
136
	 * @param FlashMessage $fMessage
137
	 */
138
	protected function terminateMessage(FlashMessage $fMessage){
139
		
140
	}
141
	
142
	/**
143
	 * Action displaying the logged user information 
144
	 */
145
	public function info(){
146
		$this->authLoadView($this->_getFiles()->getViewInfo(),["connected"=>USession::get($this->_getUserSessionKey()),"authURL"=>$this->_getBaseRoute()]);
147
	}
148
	
149
	protected function fMessage(FlashMessage $fMessage){
150
		return $this->message($fMessage->getType(), $fMessage->getTitle(), $fMessage->getContent(),$fMessage->getIcon());
151
	}
152
	
153
	public function message($type,$header,$body,$icon="info"){
154
		return $this->loadView($this->_getFiles()->getViewMessage(),get_defined_vars(),true);
155
	}
156
	
157
	protected function getOriginalURL(){
158
		return USession::get("urlParts");
159
	}
160
	
161
	/**
162
	 * To override for defining user session key, default : "activeUser"
163
	 * @return string
164
	 */
165
	public function _getUserSessionKey(){
166
		return "activeUser";
167
	}
168
	
169
	/**
170
	 * 
171
	 */
172
	abstract public function _isValidUser();
173
	
174
	/**
175
	 * To override for changing view files
176
	 * @return AuthFiles
177
	 */
178
	protected function getFiles ():AuthFiles{
179
		return new AuthFiles();
180
	}
181
	
182
	private function _getFiles():AuthFiles{
183
		if(!isset($this->authFiles)){
184
			$this->authFiles=$this->getFiles();
185
		}
186
		return $this->authFiles;
187
	}
188
189
}
190