Changes for page Forgot your username?
Last modified by superadmin on 2021/06/22 16:59
Change comment:
Install extension [org.xwiki.platform:xwiki-platform-administration-ui-9.4]
Summary
-
Page properties (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -1,85 +1,31 @@ 1 1 {{velocity}} 2 2 #set($email = "$!request.get('e')") 3 -#if($email == '' || !$services.csrf.isTokenValid($request.form_token))3 +#if($email == '') 4 4 {{translation key="xe.admin.forgotUsername.instructions"/}} 5 5 6 6 {{html}} 7 7 <form method="post" action="$doc.getURL()" class="xformInline"> 8 - <div> 9 - <label for="e">$services.localization.render('xe.admin.forgotUsername.email.label')</label> 10 - <input type="text" id="e" name="e"/> 11 - <input type="hidden" name="form_token" value="$services.csrf.getToken()"/> 12 - <span class="buttonwrapper"> 13 - <input type="submit" value="$services.localization.render('xe.admin.forgotUsername.submit')" class="button"/> 14 - </span> 15 - </div> 8 + <div><label for="e">$services.localization.render('xe.admin.forgotUsername.email.label')</label> <input type="text" id="e" name="e"/> <span class="buttonwrapper"><input type="submit" value="$services.localization.render('xe.admin.forgotUsername.submit')" class="button"/></span></div> 16 16 </form> 17 17 {{/html}} 18 18 19 19 #else 20 - #set($query = $services.query.hql(", BaseObject obj, StringProperty prop where obj.name = doc.fullName and obj.className = 'XWiki.XWikiUsers' and prop.id.id = obj.id and prop.id.name = 'email' and LOWER(prop.value) = :email").bindValue('email', $email.toLowerCase())) 21 - #set($results = $query.execute()) 22 - ## If local user does not exist check global user 23 - #if($results.size() == 0 && ${xcontext.database} != ${xcontext.mainWikiName}) 24 - #set($results = $query.setWiki("${xcontext.mainWikiName}").execute()) 25 - #end 26 - #set ($emailError = false) 27 - #if($results.size() != 0) 28 - ## Send the email 29 - #set ($from = $services.mail.sender.configuration.fromAddress) 30 - #if ("$!from" == '') 31 - #set ($from = "no-reply@${request.serverName}") 32 - #end 33 - ## The mail template use $usernames to display the results. 34 - #set ($usernames = $results) 35 - #set ($mailTemplateReference = $services.model.createDocumentReference('', 'XWiki', 'ForgotUsernameMailContent')) 36 - #set ($mailParameters = {'from' : $from, 'to' : $email, 'language' : $xcontext.locale}) 37 - #set ($message = $services.mail.sender.createMessage('template', $mailTemplateReference, $mailParameters)) 38 - #set ($discard = $message.setType('Forgot Username')) 39 - #macro (displayError $text) 13 + #set($results = $services.query.hql(", BaseObject obj, StringProperty prop where obj.name = doc.fullName and obj.className = 'XWiki.XWikiUsers' and prop.id.id = obj.id and prop.id.name = 'email' and LOWER(prop.value) = ?").bindValues([$email.toLowerCase()]).execute()) 14 + #if($results.size() == 0) 15 + {{translation key="xe.admin.forgotUsername.error.noAccount"/}} 40 40 41 - {{html}} 42 - <div class="xwikirenderingerror" title="Click to get more details about the error" style="cursor: pointer;"> 43 - $services.localization.render('xe.admin.forgotUsername.error.emailFailed') 44 - </div> 45 - <div class="xwikirenderingerrordescription hidden"> 46 - <pre>${text}</pre> 47 - </div> 48 - {{/html}} 17 + [[{{translation key="xe.admin.forgotUsername.error.retry"/}}>>$doc.fullName]] | [[{{translation key="xe.admin.forgotUsername.login"/}}>>path:${xwiki.getURL('XWiki.XWikiLogin', 'login')}]] 18 + #elseif($results.size() == 1) 19 + $services.localization.render('xe.admin.forgotUsername.result', ["**${results.get(0).substring($results.get(0).indexOf('.')).substring(1)}**"]) 49 49 50 - #set ($emailError = true) 51 - #end 52 - ## Check for an error constructing the message! 53 - #if ($services.mail.sender.lastError) 54 - #displayError($exceptiontool.getStackTrace($services.mail.sender.lastError)) 55 - #else 56 - ## Send the message and wait for it to be sent or for any error to be raised. 57 - #set ($mailResult = $services.mail.sender.send([$message], 'database')) 58 - ## Check for errors during the send 59 - #if ($services.mail.sender.lastError) 60 - #displayError($exceptiontool.getStackTrace($services.mail.sender.lastError)) 61 - #else 62 - #set ($failedMailStatuses = $mailResult.statusResult.getAllErrors()) 63 - #if ($failedMailStatuses.hasNext()) 64 - #set ($mailStatus = $failedMailStatuses.next()) 65 - #displayError($mailStatus.errorDescription) 66 - #end 67 - #end 68 - #end 21 + [[{{translation key="xe.admin.forgotUsername.login"/}}>>path:${xwiki.getURL('XWiki.XWikiLogin', 'login')}]] 22 + #else 23 + {{translation key="xe.admin.forgotUsername.multipleResults"/}} 24 + #foreach($item in $results) 25 + * **${item.substring($item.indexOf('.')).substring(1)}** 69 69 #end 70 - ## We always display a success message even if there's no user found to avoid disclosing information 71 - ## about the users registered on the wiki. 72 - #if (!$emailError) 73 - {{success}} 74 - $services.localization.render('xe.admin.forgotUsername.emailSent', ["$email"]) 75 75 76 - {{html}} 77 - <div> 78 - <a href="$xwiki.getURL('XWiki.XWikiLogin', 'login', 'loginLink=1')">$services.localization.render('xe.admin.forgotUsername.login')</a> 79 - </div> 80 - {{/html}} 81 - 82 - {{/success}} 83 - #end 28 + [[{{translation key="xe.admin.forgotUsername.login"/}}>>path:${xwiki.getURL('XWiki.XWikiLogin', 'login')}]] 29 + #end 84 84 #end 85 85 {{/velocity}}