", { class: "linkButton", id: "lbt_register", text: "Зарегистрироваться", click: doRegister}))
})
}).appendTo("body");
let oap=API.settings.get("oauthProfiles");
if (oap.length>0) {
let oad=$("",{ class: "widget", id: "divAuthWith" });
let width=((300/oap.length)-20).toFixed();
if (width>80) { width=80; }
$.each(oap,function(key,val) {
UI.addButton({
id: "btnOauth_"+val.id,
title: langPack.core.iface.loginWith+" "+val.name,
style: "width: "+width+"px",
icon: val.icon,
onClick: btnLoginWith_Click,
}).prop("prId",val.id).appendTo(oad);
})
oad.appendTo("#loginForm");
}
$(".i").keyup(function(event) {
if (event.keyCode === 13) {
$("#btnLogin").click();
}
});
}
async function btnLoginWith_Click(ref) {
let prid=$(ref.currentTarget).prop("prId");
UI.blankerShow();
let url=await getOAuthURL(prid,true);
document.location.href=url;
}
function doLogin() {
let data=UI.collectForm("loginForm",true,true,false,true);
if (data.validateErrCount > 0) {
return;
}
API.exec("POST", "auth/login",{login: data.username.val, password:data.password.val,type:"WEB"}, loginSuccessCallback,false,function(json) {
if (json.status.code==401) {
UI.showInfoDialog(langPack.core.iface.loginFailed401text,langPack.core.iface.loginFailedDialogTitle);
} else {
console.log("Error:",json);
}
});
}
function loginSuccessCallback(json) {
localStorage.setItem("token",json.data.token);
localStorage.setItem("tokenExpire",json.data.expire.stamp);
lpCacheDrop();
UI.setLocation(sessionStorage.getItem("foxAuthReturnUrl"));
sessionStorage.removeItem("foxAuthReturnUrl");
import("./main.js").then(function(mod) {
mod.load();
});
}
function doRecover() {
var buttons={};
buttons[langPack.core.iface.dialogRecoveryButton]=async function() {
let fdata=UI.collectForm("addgrp", true,false, false,true);
if (fdata.validateErrCount==0) {
if (fdata.code.val.length==0) {
API.exec({
errDict: langPack.core.iface.register.errors,
requestType: "POST",
data: {
email: fdata.email.val,
},
method: "auth/register/recovery",
onSuccess: function(json) {
UI.showInfoDialog(langPack.core.iface.users.recoverSentSucces);
return false;
},
onFinal: function() {
//doRegister();
},
noblabk: false
});
} else {
API.exec({
errDict: langPack.core.iface.register.errors,
requestType: "POST",
data: {
email: fdata.email.val,
code: fdata.code.val,
},
method: "auth/register/validateRecovery",
onSuccess: function(json) {
UI.closeDialog('addgrp');
doRecoverStage2(fdata.email.val,fdata.code.val);
return false;
},
onFinal: function() {
//doRegister();
}
});
}
}
};
buttons[langPack.core.iface.dialodCloseButton]=function() { UI.closeDialog('addgrp'); UI.setLocation("/"); load(); }
UI.createDialog(
UI.addFieldGroup([
UI.addField({val: langPack.core.iface.users.recoveryFormText}),
UI.addField({title: langPack.core.iface.users.email, type: "input", item: "reg_email", reqx:true}),
UI.addField({title: langPack.core.iface.confCode, type: "input", item: "reg_code",reqx:false,regx: "^[0-9]{4}$", regxTitle: langPack.core.iface.confCodeFmtErr}),
]),
langPack.core.iface.dialogReсoveryTitle,
buttons,
365,1,'addgrp');
if (UI.parceURL().args.address != undefined && UI.parceURL().args.code != undefined) {
$("#reg_email").val(decodeURI(UI.parceURL().args.address));
$("#reg_code").val(UI.parceURL().args.code);
UI.setLocation("/");
}
UI.openDialog('addgrp');
}
function doRecoverStage2(address,code) {
var buttons={};
buttons[langPack.core.iface.dialogRecoveryButton]=async function() {
let fdata=UI.collectForm("addgrp", true,false, false,true);
if (fdata.validateErrCount==0) {
if (fdata.pass1.val != fdata.pass2.val) {
$("#rev_pass1").addClass("alert").attr("title",langPack.core.iface.passNotMatch);
return;
}
API.exec({
errDict: langPack.core.iface.register.errors,
requestType: "POST",
data: {
email: address,
code: code,
newPasswd: fdata.pass1.val,
},
method: "auth/register/setNewPassword",
onSuccess: function(json) {
loginSuccessCallback(json);
return false;
},
onFinal: function() {
//doRegister();
},
noblabk: false
});
}
};
buttons[langPack.core.iface.dialodCloseButton]=function() { UI.closeDialog('addgrp'); UI.setLocation("/"); load(); }
UI.createDialog(
UI.addFieldGroup([
UI.addField({val: langPack.core.iface.users.enterNewPasswordText}),
UI.addField({title: langPack.core.iface.password, type: "passwordNew", item: "rev_pass1",reqx:true, disabled: false, newPasswdGenCallback: function(passwd) {$("#rev_pass2").val(passwd).addClass("changed"); }}),
UI.addField({title: langPack.core.iface.passConfirm, type: "password", item: "rev_pass2",reqx:true, disabled: false}),
]),
langPack.core.iface.dialogReсoveryTitle,
buttons,
275,1,'addgrp');
UI.openDialog('addgrp');
}
async function validatePreReg(fdata) {
let rStatus=false;
try {
await API.exec({
errDict: langPack.core.iface.register.errors,
requestType: "POST",
data: {
email: fdata.email.val,
regCode: fdata.code.val,
login: fdata.login.val,
authType: fdata.authtype.val,
},
method: "auth/register/preCheck",
onSuccess: function(json) {
rStatus=true;
return false;
}
});
} catch (e) {}
return rStatus;
}
async function getOAuthURL(prid,noblank) {
let rvUrl=undefined;
try {
if (noblank==undefined) { noblank=true; }
await API.exec("GET", "auth/oauth/"+prid,{}, function onSuccess(json) {
rvUrl=json.data.url;
},noblank);
} catch (e) {}
return rvUrl;
}
function doRegister(regCode) {
var buttons={};
buttons[langPack.core.iface.dialogRegisterButton]=async function() {
let fdata=UI.collectForm("addgrp", true,false, false,true);
if (fdata.validateErrCount==0) {
if (fdata.authtype.val !== 'password') {
let preCheckStatus= await validatePreReg(fdata);
if (!preCheckStatus) { return; }
sessionStorage.setItem("foxPreRegisterData",JSON.stringify({
email: fdata.email.val,
regCode: fdata.code.val,
login: fdata.login.val,
authType: fdata.authtype.val,
}));
let authType=fdata.authtype.val.split("_")[0];
let authKey=fdata.authtype.val.split("_")[1];
if (authType=='oauth') {
let url=await getOAuthURL(authKey);
document.location.href=url;
}
} else {
if (fdata.pass1.val != fdata.pass2.val) {
$("#reg_pass1").addClass("alert").attr("title",langPack.core.iface.passNotMatch);
return;
}
API.exec({
errDict: langPack.core.iface.register.errors,
requestType: "POST",
data: {
email: fdata.email.val,
regCode: fdata.code.val,
fullName: fdata.fullname.val,
login: fdata.login.val,
password: fdata.pass1.val,
authType: fdata.authtype.val,
},
method: "auth/register/register",
onSuccess: function(json) {
loginSuccessCallback(json);
return false;
},
onFinal: function() {
//doRegister();
}
});
}
}
};
buttons[langPack.core.iface.dialodCloseButton]=function() { UI.closeDialog('addgrp'); UI.setLocation("/"); load(); }
let authProfiles=[{val: '', title: "--"+langPack.core.iface.authTypeSelectorStub+"--"},{val: 'password',title: langPack.core.iface.authTypePasswd}];
$.each(API.settings.get("oauthProfiles"), function(key,val) {
authProfiles.push({val: "oauth_"+val.id, title: langPack.core.iface.authTypeExt+" "+val.name});
});
UI.createDialog(
UI.addFieldGroup([
UI.addField({title: langPack.core.iface.users.email, type: "input", item: "reg_email", reqx:true}),
UI.addField({title: langPack.core.iface.users.regCode, type: "input", item: "reg_code",reqx:false}),
UI.addField({title: langPack.core.iface.loginWith, type: "select", item: "reg_authtype",reqx:true, args: authProfiles, onChange: function(ref) {
if ($(ref.currentTarget).val()=='password') {
$("#reg_fullname").prop("disabled",false);
$("#reg_login").prop("disabled",false);
$("#reg_pass1").prop("disabled",false);
$("#reg_pass2").prop("disabled",false);
} else {
$("#reg_fullname").prop("disabled",true).val("");
$("#reg_login").prop("disabled",true).val("");
$("#reg_pass1").prop("disabled",true).val("");
$("#reg_pass2").prop("disabled",true).val("");
}
}}),
UI.addField({title: langPack.core.iface.users.fullName, type: "input", item: "reg_fullname",reqx: true, disabled: true}),
UI.addField({title: langPack.core.iface.users.login, type: "input", item: "reg_login",reqx:true, disabled: true}),
UI.addField({title: langPack.core.iface.password, type: "passwordNew", item: "reg_pass1",reqx:true, disabled: true, newPasswdGenCallback: function(passwd) {$("#reg_pass2").val(passwd).addClass("changed"); }}),
UI.addField({title: langPack.core.iface.passConfirm, type: "password", item: "reg_pass2",reqx:true, disabled: true}),
]),
langPack.core.iface.dialogRegisterTitle,
buttons,
515,1,'addgrp');
let fprd=sessionStorage.getItem("foxPreRegisterData")
if (fprd) {
fprd=JSON.parse(fprd);
$("#reg_email").val(fprd.email);
$("#reg_code").val(fprd.regCode);
$("#reg_authtype").val(fprd.authType);
}
if (typeof(regCode)=="string") {
$("#reg_code").val(regCode);
}
UI.openDialog('addgrp');
}