-
Notifications
You must be signed in to change notification settings - Fork 809
/
Features.php
145 lines (130 loc) · 3.05 KB
/
Features.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
<?php
namespace Laravel\Jetstream;
class Features
{
/**
* Determine if the given feature is enabled.
*
* @param string $feature
* @return bool
*/
public static function enabled(string $feature)
{
return in_array($feature, config('jetstream.features', []));
}
/**
* Determine if the feature is enabled and has a given option enabled.
*
* @param string $feature
* @param string $option
* @return bool
*/
public static function optionEnabled(string $feature, string $option)
{
return static::enabled($feature) &&
config("jetstream-options.{$feature}.{$option}") === true;
}
/**
* Determine if the application is allowing profile photo uploads.
*
* @return bool
*/
public static function managesProfilePhotos()
{
return static::enabled(static::profilePhotos());
}
/**
* Determine if the application is using any API features.
*
* @return bool
*/
public static function hasApiFeatures()
{
return static::enabled(static::api());
}
/**
* Determine if the application is using any team features.
*
* @return bool
*/
public static function hasTeamFeatures()
{
return static::enabled(static::teams());
}
/**
* Determine if invitations are sent to team members.
*
* @return bool
*/
public static function sendsTeamInvitations()
{
return static::optionEnabled(static::teams(), 'invitations');
}
/**
* Determine if the application has terms of service / privacy policy confirmation enabled.
*
* @return bool
*/
public static function hasTermsAndPrivacyPolicyFeature()
{
return static::enabled(static::termsAndPrivacyPolicy());
}
/**
* Determine if the application is using any account deletion features.
*
* @return bool
*/
public static function hasAccountDeletionFeatures()
{
return static::enabled(static::accountDeletion());
}
/**
* Enable the profile photo upload feature.
*
* @return string
*/
public static function profilePhotos()
{
return 'profile-photos';
}
/**
* Enable the API feature.
*
* @return string
*/
public static function api()
{
return 'api';
}
/**
* Enable the teams feature.
*
* @param array $options
* @return string
*/
public static function teams(array $options = [])
{
if (! empty($options)) {
config(['jetstream-options.teams' => $options]);
}
return 'teams';
}
/**
* Enable the terms of service and privacy policy feature.
*
* @return string
*/
public static function termsAndPrivacyPolicy()
{
return 'terms';
}
/**
* Enable the account deletion feature.
*
* @return string
*/
public static function accountDeletion()
{
return 'account-deletion';
}
}