fix: account redirection with new login system

This commit is contained in:
Massimo Melina 2020-05-15 12:05:05 +02:00
parent 12c3804dcf
commit 993f75214f

View File

@ -295,7 +295,7 @@ type
vars: THashedStringList; vars: THashedStringList;
created, ttl, expires: Tdatetime; created, ttl, expires: Tdatetime;
public public
id, user, ip: string; id, user, ip, redirect: string;
constructor create(const sid:string=''); constructor create(const sid:string='');
destructor Destroy; override; destructor Destroy; override;
procedure setVar(const k,v:string); procedure setVar(const k,v:string);
@ -4936,6 +4936,13 @@ var
exit; exit;
data.user:=data.account.user; data.user:=data.account.user;
data.pwd:=data.account.pwd; data.pwd:=data.account.pwd;
if data.session.redirect > '' then
begin
conn.reply.mode:=HRM_REDIRECT;
conn.reply.url:=data.session.redirect;
data.session.redirect:=''; // only once
result:=FALSE;
end;
end; // sessionSetup end; // sessionSetup
procedure serveTar(); procedure serveTar();
@ -5187,12 +5194,12 @@ var
add2log('Failed deletion in '+url+CRLF+join(CRLF, errors), data); add2log('Failed deletion in '+url+CRLF+join(CRLF, errors), data);
end; // deletion end; // deletion
function getAccountRedirect():string; function getAccountRedirect(acc:Paccount=NIL):string;
var
acc: Paccount;
begin begin
result:=''; result:='';
acc:=accountRecursion(data.account, ARSC_REDIR); if acc = NIL then
acc:=data.account;
acc:=accountRecursion(acc, ARSC_REDIR);
if acc = NIL then exit; if acc = NIL then exit;
result:=acc.redir; result:=acc.redir;
if (result = '') or ansiContainsStr(result, '://') then exit; if (result = '') or ansiContainsStr(result, '://') then exit;
@ -5324,6 +5331,7 @@ var
or (data.postVars.values['password'] = acc.pwd) then or (data.postVars.values['password'] = acc.pwd) then
begin begin
data.session.user:=acc.user; data.session.user:=acc.user;
data.session.redirect:=getAccountRedirect(acc);
s:='ok'; s:='ok';
end end
else else