FSN#25917 Self registratie kan beter
svn path=/Website/trunk/; revision=17432
This commit is contained in:
@@ -17,8 +17,6 @@
|
||||
dat is in tegenspraak met het betekenisloos zijn van de u-param
|
||||
Als je dat wilt moet je maar BOOKMARK's gebruiken
|
||||
*/
|
||||
|
||||
LCL_Disable = 1;
|
||||
ANONYMOUS_Allowed = 1;
|
||||
%>
|
||||
<!-- #include file="../Shared/common.inc"-->
|
||||
@@ -28,21 +26,30 @@
|
||||
// For flexiblity reasons: Literal or runtime parameter(s), just pass through...
|
||||
var rest = String(Request.ServerVariables("QUERY_STRING")); // Request.ServerVariables("QUERY_STRING") is url-encoded,
|
||||
// dat is hier safer dan Request.QueryString
|
||||
rest = rest.substring(("u="+u).length+1);
|
||||
// Strip eventuele leading &fac_id=XXXX er ook af.
|
||||
rest = rest.substring(rest.indexOf("u=")).substring(("u="+u).length+1);
|
||||
|
||||
var sql = "SELECT fac_bookmark_path,"
|
||||
+ " fac_bookmark_query,"
|
||||
+ " prs_perslid_key_auth,"
|
||||
+ " fac_bookmark_unauth_url"
|
||||
+ " fac_bookmark_unauth_url,"
|
||||
+ " fac_bookmark_expire"
|
||||
+ " FROM fac_bookmark"
|
||||
+ " WHERE fac_bookmark_id = " + safe.quoted_sql(u)
|
||||
+ " AND (fac_bookmark_expire IS NULL OR fac_bookmark_expire > SYSDATE)";
|
||||
+ " WHERE fac_bookmark_id = " + safe.quoted_sql(u);
|
||||
var oRs = Oracle.Execute(sql);
|
||||
if (oRs.Eof)
|
||||
{
|
||||
Response.Write("BOOKMARK URL NOT FOUND");
|
||||
Response.End;
|
||||
shared.simpel_page(L("lcl_fac_bookmark_unknown"));
|
||||
}
|
||||
if (oRs("fac_bookmark_expire").Value != null)
|
||||
{
|
||||
var expire = new Date(oRs("fac_bookmark_expire").Value);
|
||||
if (expire <= new Date)
|
||||
{
|
||||
shared.simpel_page(L("lcl_fac_bookmark_expired"));
|
||||
}
|
||||
}
|
||||
|
||||
var url = oRs("fac_bookmark_path").Value;
|
||||
|
||||
if (oRs("prs_perslid_key_auth").Value)
|
||||
|
||||
@@ -260,8 +260,24 @@ prs =
|
||||
result.writesys = user.checkAutorisation("WEB_PRSSYS", true)!=null;
|
||||
|
||||
return result;
|
||||
}
|
||||
},
|
||||
|
||||
set_flag: function(prs_key, flagbit)
|
||||
{
|
||||
var sql = "UPDATE prs_perslid"
|
||||
+ " SET prs_perslid_flags = prs_perslid_flags + " + flagbit // Kan omdat we verderop afdwingen dat flag 0 was
|
||||
+ " WHERE prs_perslid_key = " + prs_key
|
||||
+ " AND BITAND(prs_perslid_flags, " + flagbit + ") = 0";
|
||||
Oracle.Execute(sql);
|
||||
},
|
||||
clear_flag: function(prs_key, flagbit)
|
||||
{
|
||||
var sql = "UPDATE prs_perslid"
|
||||
+ " SET prs_perslid_flags = BITAND(prs_perslid_flags, 255-" + flagbit + ")"
|
||||
+ " WHERE prs_perslid_key = " + prs_key
|
||||
+ " AND BITAND(prs_perslid_flags, " + flagbit + ") = " + flagbit;
|
||||
Oracle.Execute(sql);
|
||||
}
|
||||
}
|
||||
|
||||
%>
|
||||
|
||||
35
APPL/PRS/prs_approve.asp
Normal file
35
APPL/PRS/prs_approve.asp
Normal file
@@ -0,0 +1,35 @@
|
||||
<%@ LANGUAGE = JavaScript %>
|
||||
<% /*
|
||||
$Revision$
|
||||
$Id$
|
||||
|
||||
File: prs_approve.asp
|
||||
Description: Bevestig de toegang van een gebruiker. Handig als hij te
|
||||
laat in zijn e-mail heeft geklikt
|
||||
|
||||
Parameters: prs_key
|
||||
Context: Vanuit prs_show_perslid voor unapproved users
|
||||
Result: JSON object
|
||||
Note: Gebruiker kan het in eerste instantie zelf via self_register_confirm
|
||||
|
||||
*/
|
||||
JSON_Result = 1;
|
||||
%>
|
||||
<!--#include file="../Shared/common.inc"-->
|
||||
<!--#include file="../Shared/json2.js" -->
|
||||
<!--#include file="./prs.inc" -->
|
||||
<%
|
||||
protectRequest.validateToken();
|
||||
|
||||
user.checkAutorisation("WEB_PRSSYS", true) || user.checkAutorisation("WEB_FACMGT"); // Minimaal
|
||||
|
||||
var prs_key = getFParamInt("prs_key");
|
||||
|
||||
prs.clear_flag(prs_key, 2); // 2=unapproved
|
||||
|
||||
// FUTURE Extension: mail naar gebruiker dat hij geactiveerd is.
|
||||
|
||||
result = {success: true};
|
||||
|
||||
Response.Write(JSON.stringify(result));
|
||||
%>
|
||||
@@ -144,6 +144,19 @@ oRs.Close();
|
||||
FcltMgr.openModalDetail(url, "<%=L("lcl_password_link")%>");
|
||||
}
|
||||
|
||||
function prs_approve()
|
||||
{
|
||||
if (confirm(L("lcl_prs_approve")))
|
||||
{
|
||||
var data = { prs_key: <%=prs_key%> };
|
||||
protectRequest.dataToken(data);
|
||||
$.post("prs_approve.asp",
|
||||
data,
|
||||
FcltCallbackRefresh,
|
||||
"json");
|
||||
}
|
||||
}
|
||||
|
||||
function prs_gotoautgroup()
|
||||
{
|
||||
var url = "appl/facmgtVB/fac_persoongroeprecord.asp?prs_perslid_key=<%=prs_key%>";
|
||||
@@ -154,6 +167,9 @@ oRs.Close();
|
||||
|
||||
<body id="showbody">
|
||||
<%
|
||||
var thisPrs = prs.prs_perslid(prs_key, { withWL: true, withPhoto: true }); // geeft ook alle informatie
|
||||
var prs_user = new Perslid(prs_key);
|
||||
|
||||
var buttons = [];
|
||||
if (prsauthparams.writeman || prsauthparams.writeuse) {
|
||||
buttons = [ {title: L("lcl_change"), action:"prs_change()", icon: "wijzigen.png" } ];
|
||||
@@ -169,7 +185,10 @@ oRs.Close();
|
||||
buttons.push( {title: L("lcl_prs_frame_substitutes"), icon: "group.png", action: "prs_substitute()"});
|
||||
}
|
||||
|
||||
if (prsauthparams.writesys || xfunc.canWrite("WEB_FACMGT")) {
|
||||
if (prsauthparams.writesys || xfunc.canWrite("WEB_FACMGT"))
|
||||
{
|
||||
if (prs_user.isUnapprovedUser())
|
||||
buttons.push( { title: L("lcl_prs_approve"), icon: "accept.png", action: "prs_approve()" });
|
||||
buttons.push( { title: L("lcl_password_title"), icon: "wall_brick.png", action: "prs_changepwd()" });
|
||||
}
|
||||
|
||||
@@ -182,7 +201,7 @@ oRs.Close();
|
||||
<div id="show">
|
||||
<form name=u2>
|
||||
<% BLOCK_START("prsPerslid", L("lcl_prs_basisblok"));
|
||||
var thisPrs = prs.prs_perslid(prs_key, { withWL: true, withPhoto: true }); // geeft ook alle informatie
|
||||
|
||||
%> <tr valign="center"><td colspan="2"></td><td rowspan="20">
|
||||
<img id='photo' src="<%=thisPrs.photopaththumb %>">
|
||||
</td></tr>
|
||||
@@ -207,6 +226,17 @@ oRs.Close();
|
||||
|
||||
var wl = thisPrs.werklocatie.alg_locatie_key? thisPrs.werklocatie.aanduiding : "";
|
||||
ROFIELDTR('fld', L("lcl_prs_work_location"), wl, {suppressEmpty: true});
|
||||
|
||||
if (prsauthparams.writesys || xfunc.canWrite("WEB_FACMGT")) // Die kunnen ook approve'n
|
||||
{
|
||||
var flagtxt = [];
|
||||
if (prs_user.isSystemUser()) flagtxt.push(L("lcl_prs_flags_system"));
|
||||
if (prs_user.isUnapprovedUser()) flagtxt.push(L("lcl_prs_flags_unapproved"));
|
||||
if (prs_user.isGroupedUser()) flagtxt.push(L("lcl_prs_flags_grouped"));
|
||||
if (prs_user.isBlockedUser()) flagtxt.push(L("lcl_prs_flags_blocked"));
|
||||
if (flagtxt.length)
|
||||
ROFIELDTR("fld", L("lcl_prs_flags"), flagtxt.join("\n"));
|
||||
}
|
||||
BLOCK_END();
|
||||
|
||||
BLOCK_START("prsPerslid2", L("lcl_prs_organisatieblok"));
|
||||
@@ -284,7 +314,6 @@ oRs.Close();
|
||||
|
||||
if ((prs_key == user_key) && anyOverrule)
|
||||
{
|
||||
var thisUser = new Perslid(prs_key); // geeft ook alle informatie
|
||||
BLOCK_START("prsNoti", L("lcl_noti_prsvoorkeur"));
|
||||
CHECKBOXTR(L("lcl_noti_niks"), "fldfacnoti", "noti0", thisUser.noti_niks(), { html: " disabled" });
|
||||
CHECKBOXTR(L("lcl_noti_portal"), "fldfacnoti", "noti1", thisUser.noti_portal(), { html: " disabled" });
|
||||
|
||||
@@ -4,11 +4,11 @@
|
||||
$Id$
|
||||
|
||||
File: confirm_email.asp
|
||||
Description: Een zelf geregistreerde gebruiker krijgt in de e-mail een link naar
|
||||
deze pagina om te bevestigen
|
||||
Description: Een zelf geregistreerde gebruiker krijgt in de e-mail een
|
||||
link naar deze pagina om te bevestigen
|
||||
Context: E-mail is gestuurd vanuit self_register_save.asp
|
||||
|
||||
NOTE:
|
||||
NOTE: Systeem beheerder kan het via show_perslid/prs_approve.asp ook
|
||||
|
||||
*/
|
||||
ANONYMOUS_Allowed = 1;
|
||||
@@ -26,11 +26,7 @@ var result = { success: 1, warning: "" };
|
||||
|
||||
var user_key = getQParamInt("user_key"); // is toch beschermd met HMAC
|
||||
|
||||
var sql = "UPDATE prs_perslid"
|
||||
+ " SET prs_perslid_flags = BITAND(prs_perslid_flags, 255-2)" // 2 was 'onbevestigd'
|
||||
+ " WHERE prs_perslid_key=" + user_key
|
||||
+ " AND BITAND(prs_perslid_flags, 2) = 2";
|
||||
oRs = Oracle.Execute(sql);
|
||||
prs.clear_flag(user_key, 2); // 2=unapproved
|
||||
|
||||
// Niet doen, laat ze maar inloggen zodat je nog niets hebt aan een onderschepte e-mail, is veiliger
|
||||
// doLogin(user_key)
|
||||
|
||||
@@ -35,13 +35,34 @@ if (!new RegExp(S("email_regexp_single"), "ig").test(email))
|
||||
if (S("self_register_email_whitelist") && !new RegExp(S("self_register_email_whitelist"), "ig").test(email))
|
||||
abort_with_warning(L("lcl_self_register_email_wrong")); // Email niet geaccepteerd
|
||||
|
||||
var sql = "SELECT prs_perslid_key"
|
||||
var sql = "SELECT prs_perslid_key, "
|
||||
+ " prs_perslid_aanmaak, "
|
||||
+ " prs_perslid_flags"
|
||||
+ " FROM prs_v_aanwezigperslid"
|
||||
+ " WHERE (prs_perslid_email =" + safe.quoted_sql(email) + " OR "
|
||||
+ " prs_perslid_oslogin = " + safe.quoted_sql(email) + ")";
|
||||
oRs = Oracle.Execute(sql);
|
||||
if (!oRs.eof)
|
||||
abort_with_warning(L("lcl_self_register_duplicate"));
|
||||
{
|
||||
if (oRs("prs_perslid_flags") && 2) // Unappoved
|
||||
{
|
||||
var aanmaak = new Date(oRs("prs_perslid_aanmaak").Value);
|
||||
var expire = new Date();
|
||||
expire.setMinutes(expire.getMinutes() - S("self_register_expire"));
|
||||
if (expire > aanmaak)
|
||||
{
|
||||
var sql = "DELETE prs_v_aanwezigperslid"
|
||||
+ " WHERE (prs_perslid_email =" + safe.quoted_sql(email) + " OR "
|
||||
+ " prs_perslid_oslogin = " + safe.quoted_sql(email) + ")"
|
||||
+ " AND BITAND(prs_perslid_flags, 2) = 2";
|
||||
Oracle.Execute(sql); // Cascadeert ook de bookmark weg trouwens
|
||||
}
|
||||
else
|
||||
abort_with_warning(L("lcl_self_register_active")); // Er loopt nog een aanvraag
|
||||
}
|
||||
else
|
||||
abort_with_warning(L("lcl_self_register_duplicate"));
|
||||
}
|
||||
|
||||
var fields = [ { dbs: "prs_perslid_naam", typ: "varchar", frm: "prs_naam" },
|
||||
{ dbs: "prs_perslid_voornaam", typ: "varchar", frm: "prs_vrnaam" },
|
||||
|
||||
Reference in New Issue
Block a user