spec/password.cfm
2025-06-02 16:16:51 +03:00

104 lines
3.3 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!--- v0.03 2023-01-07 Argon2 *** Lucee only --->
<cfsilent>
<cfimport prefix="m" taglib="lib"/>
<cfimport prefix="m" taglib="lib/bean"/>
<cfimport prefix="layout" taglib="layout"/>
<m:prepare_form pageInfoOut="pageInfo" trackOut="tr"/>
<!--- *** Проверки на допустимость пароля не совпадают --->
<cfif request.usr_id EQ request.ANONYMOUS_USR_ID><cfabort></cfif>
<cfparam name="old_password" default="">
<cfparam name="new_password" default="">
<cfparam name="new_password2" default="">
<cfset msg="">
<cfset structDelete(session,"settings")>
<cfif isDefined("act")>
<cfquery name="qCheckCredentials" datasource="#request.DS#">
select usr_id, password as pwdhash from usr
where usr_id='#request.usr_id#'
limit 1
/* AND pwdcompare('#old_password#',password,0) >0 */
</cfquery>
<!--- check credentials --->
<cfset checkHash=request.passwordHashCheck('#old_password#', qCheckCredentials.pwdhash, 'argon2id')/>
<cfset msg = loginPasswordPolicyCheck(request.usr_id, "", new_password, new_password2)/>
<cfif NOT checkHash>
<cfset msg="Старый пароль введен неверно"/>
</cfif>
<cfif msg EQ "" AND (qCheckCredentials.RecordCount GT 0) AND (new_password EQ new_password2)>
<cfset newHash=request.passwordHashCreate('#new_password#')/>
<cfquery name="qChange" datasource="#request.DS#">
update usr set password='#newHash#'
where usr_id='#request.usr_id#'
</cfquery>
<cflocation url="index.cfm" addtoken="No">
</cfif>
</cfif>
<cfif isDefined("cancel")>
<cflocation url="index.cfm" addtoken="No">
</cfif>
</cfsilent><!--- ----------------------------------------------------------------------------
---------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------
---><layout:page section="header" pageInfo=#pageInfo# form="1">
<layout:attribute name="title">
<b>Смена пароля</b>
</layout:attribute>
</layout:page>
<style>
.tr {line-height:3em;}
.td {vertical-align: baseline;}
</style>
<!---<cfdump var=#request#/>--->
<cfoutput>
Смена пароля в локальной базе данных.
<div style="display:table; width:100%; height:100%;">
<div style="display:table-cell; text-align:center; vertical-align:middle;">
<div style="display:inline-block;">
<div class="table">
<div class="tr">
<div class="td">Старый пароль</div>
<div class="td"><input type="password" name="old_password"></div>
</div>
<div class="tr">
<div class="td">Новый пароль</div>
<div class="td"><input type="password" name="new_password"></div>
</div>
<div class="tr">
<div class="td">Подтверждение</div>
<div class="td"><input type="password" name="new_password2"></div>
</div>
<div class="tr">
<div class="td r"><button type="submit" class="maincontrol" name="act"> ОК </button></div>
<div class="td l"><button type="submit" class="maincontrol" name="cancel">Отмена</button></div>
</div>
</div>
</div>
<br/><br/>
<div class="c warn">#msg#&nbsp;</div>
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
</div>
</div>
</cfoutput>
<layout:page section="footer" closeForm="Yes"/>