Completed
Branch newinternal (6027bd)
by Simon
06:03
created

asAllLoggedInUsersPage()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 13
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 13
rs 9.4285
cc 1
eloc 9
nc 1
nop 0
1
<?php
2
/**
3
 * Created by PhpStorm.
4
 * User: stwalkerster
5
 * Date: 24/03/2016
6
 * Time: 23:52
7
 */
8
9
namespace Waca\Security;
10
11
12
final class SecurityConfigurationFactory
13
{
14
	/**
15
	 * @var bool
16
	 */
17
	private $forceIdentified;
18
19
	/**
20
	 * Security constructor.
21
	 *
22
	 * @param bool $forceIdentified
23
	 */
24
	public function __construct($forceIdentified)
25
	{
26
		$this->forceIdentified = $forceIdentified;
27
	}
28
29
	/**
30
	 * Returns a pre-built security configuration for an internal page.
31
	 *
32
	 * @category Security-Critical
33
	 * @return SecurityConfiguration
34
	 */
35
	public function asInternalPage()
36
	{
37
		$config = new SecurityConfiguration();
38
		$config->setAdmin(SecurityConfiguration::ALLOW)
39
			->setUser(SecurityConfiguration::ALLOW);
40
41
		$config->setRequireIdentified($this->forceIdentified);
42
43
		return $config;
44
	}
45
46
	/**
47
	 * Returns a pre-built security configuration for a tool admin only page.
48
	 *
49
	 * @category Security-Critical
50
	 * @return SecurityConfiguration
51
	 */
52
	public function asAdminPage()
53
	{
54
		$config = new SecurityConfiguration();
55
		$config->setAdmin(SecurityConfiguration::ALLOW);
56
57
		$config->setRequireIdentified($this->forceIdentified);
58
59
		return $config;
60
	}
61
62
	/**
63
	 * Returns a pre-built security configuration for a page accessible to *ALL* logged in users, including suspended
64
	 * and new users. This probably isn't the setting you want.
65
	 *
66
	 * @category Security-Critical
67
	 * @return SecurityConfiguration
68
	 */
69
	public function asAllLoggedInUsersPage()
70
	{
71
		$config = new SecurityConfiguration();
72
		$config->setAdmin(SecurityConfiguration::ALLOW)
73
			->setUser(SecurityConfiguration::ALLOW)
74
			->setDeclined(SecurityConfiguration::ALLOW)
75
			->setNew(SecurityConfiguration::ALLOW)
76
			->setSuspended(SecurityConfiguration::ALLOW);
77
78
		$config->setRequireIdentified($this->forceIdentified);
79
80
		return $config;
81
	}
82
83
	/**
84
	 * @return SecurityConfiguration
85
	 * @category Security-Critical
86
	 */
87
	public function asCheckUserData()
88
	{
89
		$config = new SecurityConfiguration();
90
		$config->setCheckuser(SecurityConfiguration::ALLOW)
91
			->setCommunity(SecurityConfiguration::DENY)
92
			->setSuspended(SecurityConfiguration::DENY)
93
			->setDeclined(SecurityConfiguration::DENY)
94
			->setNew(SecurityConfiguration::DENY);
95
96
		$config->setRequireIdentified($this->forceIdentified);
97
98
		return $config;
99
	}
100
101
	/**
102
	 * Returns a pre-built security configuration for a public page.
103
	 *
104
	 * @category Security-Critical
105
	 * @return SecurityConfiguration
106
	 */
107
	public function asPublicPage()
108
	{
109
		$config = new SecurityConfiguration();
110
		$config->setAdmin(SecurityConfiguration::ALLOW)
111
			->setUser(SecurityConfiguration::ALLOW)
112
			->setCheckuser(SecurityConfiguration::ALLOW)
113
			->setCommunity(SecurityConfiguration::ALLOW)
114
			->setSuspended(SecurityConfiguration::ALLOW)
115
			->setDeclined(SecurityConfiguration::ALLOW)
116
			->setNew(SecurityConfiguration::ALLOW);
117
118
		// Public pages shouldn't be inaccessible to logged-in, unidentified users.
119
		// Otherwise, logged in but unidentified users can't even log out.
120
		$config->setRequireIdentified(false);
121
122
		return $config;
123
	}
124
}