| ... |
... |
@@ -1,6 +1,8 @@ |
| 1 |
1 |
{{velocity}} |
| 2 |
2 |
#set ($discard = $xwiki.ssx.use('PublicWebSite.WebHome')) |
|
3 |
+ |
| 3 |
3 |
#set ($contactURL = $xwiki.getURL('contact.WebHome')) |
|
5 |
+ |
| 4 |
4 |
#set ($startingPoints = [{ |
| 5 |
5 |
'icon': 'search', |
| 6 |
6 |
'title': 'Review & diagnose', |
| ... |
... |
@@ -38,6 +38,7 @@ |
| 38 |
38 |
], |
| 39 |
39 |
'cta': 'Discuss support plan' |
| 40 |
40 |
}]) |
|
43 |
+ |
| 41 |
41 |
#set ($commonPackages = [{ |
| 42 |
42 |
'service': 'XWiki Health Check', |
| 43 |
43 |
'price': '€390', |
| ... |
... |
@@ -79,6 +79,29 @@ |
| 79 |
79 |
'price': 'Quoted after review', |
| 80 |
80 |
'description': 'Custom authenticators, container authentication, special login flows or wiki farm authentication strategy.' |
| 81 |
81 |
}]) |
|
85 |
+ |
|
86 |
+#set ($authRows = [{ |
|
87 |
+ 'service': 'XWiki Authentication Review', |
|
88 |
+ 'price': '€290', |
|
89 |
+ 'bestFor': 'Understanding the current login flow, users, groups and access model.' |
|
90 |
+},{ |
|
91 |
+ 'service': 'OIDC / Microsoft Entra ID Setup', |
|
92 |
+ 'price': 'From €590', |
|
93 |
+ 'bestFor': 'SSO setup with Microsoft Entra ID, Keycloak or another compatible OIDC provider.' |
|
94 |
+},{ |
|
95 |
+ 'service': 'XWiki MFA Installation', |
|
96 |
+ 'price': 'From €490', |
|
97 |
+ 'bestFor': 'Adding MFA to the standard XWiki login flow.' |
|
98 |
+},{ |
|
99 |
+ 'service': 'LDAP / Active Directory Review', |
|
100 |
+ 'price': 'From €390', |
|
101 |
+ 'bestFor': 'LDAP or AD login, profile mapping, group mapping and synchronization questions.' |
|
102 |
+},{ |
|
103 |
+ 'service': 'Advanced Authentication Work', |
|
104 |
+ 'price': 'Quoted after review', |
|
105 |
+ 'bestFor': 'Custom authenticators, container authentication, special redirects or complex wiki farm scenarios.' |
|
106 |
+}]) |
|
107 |
+ |
| 82 |
82 |
#set ($supportPlans = [{ |
| 83 |
83 |
'icon': 'leaf', |
| 84 |
84 |
'title': 'Essential Support', |
| ... |
... |
@@ -118,6 +118,7 @@ |
| 118 |
118 |
], |
| 119 |
119 |
'cta': 'Discuss extended support' |
| 120 |
120 |
}]) |
|
147 |
+ |
| 121 |
121 |
#set ($complexProjects = [ |
| 122 |
122 |
'Wiki farm restructuring', |
| 123 |
123 |
'Major XWiki LTS upgrades', |
| ... |
... |
@@ -127,6 +127,7 @@ |
| 127 |
127 |
'Performance and stability improvements', |
| 128 |
128 |
'Content and platform migrations' |
| 129 |
129 |
]) |
|
157 |
+ |
| 130 |
130 |
#set ($faqItems = [{ |
| 131 |
131 |
'question': 'Are these fixed prices?', |
| 132 |
132 |
'answer': 'Some services have fixed starting prices. Larger or more complex projects are reviewed first and quoted separately, so the scope, risks and required testing are clear before implementation starts.' |
| ... |
... |
@@ -146,6 +146,7 @@ |
| 146 |
146 |
'question': 'Do prices include external costs?', |
| 147 |
147 |
'answer': 'The prices on this page cover Agnease services. External hosting, infrastructure or third-party costs are discussed separately when relevant.' |
| 148 |
148 |
}]) |
|
177 |
+ |
| 149 |
149 |
{{html clean="false"}} |
| 150 |
150 |
|
| 151 |
151 |
<section class="resource-header" aria-labelledby="hero-title"> |
| ... |
... |
@@ -159,8 +159,8 @@ |
| 159 |
159 |
|
| 160 |
160 |
<h1 id="hero-title">XWiki Service Packages</h1> |
| 161 |
161 |
|
| 162 |
|
- <p class="lead"> |
| 163 |
|
- Clear starting points for XWiki upgrades, authentication, troubleshooting and long-term support.<br/> |
|
191 |
+ <p class="resource-summary"> |
|
192 |
+ Clear starting points for XWiki upgrades, authentication, troubleshooting and long-term support. |
| 164 |
164 |
Start with a review, request an implementation quote, or choose a support plan for ongoing XWiki help. |
| 165 |
165 |
</p> |
| 166 |
166 |
|
| ... |
... |
@@ -191,29 +191,23 @@ |
| 191 |
191 |
or set up ongoing support. This keeps the first step clear without pretending that every XWiki environment |
| 192 |
192 |
has the same complexity. |
| 193 |
193 |
</p> |
| 194 |
|
- |
| 195 |
|
- <div class="pathways"> |
|
223 |
+ |
|
224 |
+ <div class="services-grid"> |
| 196 |
196 |
#foreach ($entry in $startingPoints) |
| 197 |
|
- <article class="pathway-card"> |
| 198 |
|
- <div class="card-heading"> |
| 199 |
|
- <div class="pathway-icon" aria-hidden="true"> |
| 200 |
|
- <i class="fa fa-$entry.icon"></i> |
| 201 |
|
- </div> |
| 202 |
|
- <h3>$entry.title</h3> |
|
226 |
+ <article class="service"> |
|
227 |
+ <div class="service-icon" aria-hidden="true"> |
|
228 |
+ <i class="fa fa-$entry.icon"></i> |
| 203 |
203 |
</div> |
| 204 |
|
- |
| 205 |
|
- <p><strong>$entry.price</strong></p> |
| 206 |
|
- |
| 207 |
|
- <p>$entry.description</p> |
| 208 |
|
- |
| 209 |
|
- <ul> |
| 210 |
|
- #foreach ($item in $entry.items) |
| 211 |
|
- <li>$item</li> |
| 212 |
|
- #end |
| 213 |
|
- </ul> |
| 214 |
|
- |
| 215 |
|
- <div class="card-link"> |
| 216 |
|
- <a href="$contactURL">$entry.cta</a> |
|
230 |
+ <div class="service-body"> |
|
231 |
+ <h4>$entry.title</h4> |
|
232 |
+ <p><strong>$entry.price</strong></p> |
|
233 |
+ <p>$entry.description</p> |
|
234 |
+ <ul> |
|
235 |
+ #foreach ($item in $entry.items) |
|
236 |
+ <li>$item</li> |
|
237 |
+ #end |
|
238 |
+ </ul> |
|
239 |
+ <p><a class="btn btn-primary" href="$contactURL">$entry.cta</a></p> |
| 217 |
217 |
</div> |
| 218 |
218 |
</article> |
| 219 |
219 |
#end |
| ... |
... |
@@ -252,6 +252,51 @@ |
| 252 |
252 |
</p> |
| 253 |
253 |
</div> |
| 254 |
254 |
|
|
278 |
+ <h2 id="authentication">Authentication & access control</h2> |
|
279 |
+ |
|
280 |
+ <p> |
|
281 |
+ XWiki authentication depends on the current login method, identity provider, user source, |
|
282 |
+ group mapping and access-control model. Agnease can help review, configure or improve standard |
|
283 |
+ XWiki login, LDAP, Active Directory, OpenID Connect, Microsoft Entra ID, MFA and more advanced |
|
284 |
+ authentication scenarios. |
|
285 |
+ </p> |
|
286 |
+ |
|
287 |
+ <div class="resource-note"> |
|
288 |
+ <p> |
|
289 |
+ <strong>MFA is treated separately:</strong> SSO, LDAP and OIDC define how users log in. |
|
290 |
+ MFA adds an additional verification layer. In some environments MFA belongs in XWiki, while in |
|
291 |
+ others it is better enforced by the external identity provider. |
|
292 |
+ </p> |
|
293 |
+ </div> |
|
294 |
+ |
|
295 |
+ <table class="table table-bordered table-striped"> |
|
296 |
+ <thead> |
|
297 |
+ <tr> |
|
298 |
+ <th>Authentication service</th> |
|
299 |
+ <th>Starting price</th> |
|
300 |
+ <th>Best for</th> |
|
301 |
+ </tr> |
|
302 |
+ </thead> |
|
303 |
+ <tbody> |
|
304 |
+ #foreach ($entry in $authRows) |
|
305 |
+ <tr> |
|
306 |
+ <td><strong>$entry.service</strong></td> |
|
307 |
+ <td>$entry.price</td> |
|
308 |
+ <td>$entry.bestFor</td> |
|
309 |
+ </tr> |
|
310 |
+ #end |
|
311 |
+ </tbody> |
|
312 |
+ </table> |
|
313 |
+ |
|
314 |
+ <div class="resource-cta"> |
|
315 |
+ <h3>Need authentication changes?</h3> |
|
316 |
+ <p> |
|
317 |
+ Send a short description of your current login method, user source, identity provider and the |
|
318 |
+ authentication result you want to achieve. |
|
319 |
+ </p> |
|
320 |
+ <a class="btn btn-primary" href="$contactURL">Request authentication review</a> |
|
321 |
+ </div> |
|
322 |
+ |
| 255 |
255 |
<h2 id="support">Monthly support plans</h2> |
| 256 |
256 |
|
| 257 |
257 |
<p> |