geesyscare wrote:

Hope, Duo is not an open source application and it is chargeable beyond 10 users. instead can we could try with
open2fa,
linotp,
multiotp
and many more.

Can we have your opinion @ardyan please?

Hi @geesyscare and @kvvaradha
please read my new post at https://frontaccounting.com/punbb/viewt … ?pid=40108

google2fa Extension for FA has been packaged at https://github.com/ardyan69/fa-google2fa and attached here.

Replace index.php file at root path.

Also check out my other posts about 2fa:
https://frontaccounting.com/punbb/viewtopic.php?id=9462

Hi @kvvaradha,
i can't figuring out how to make this without customize  the core.
can you give me a clue, how to cut session between after login and before going to dashboard page just from module?

Hi,
Yes @geesyscare, because our office using DUO for additional login purposes. But sure, the other kind of 2FA could be deploy to frontaccounting. In the near future I will do my accounting lab and try the opensourcce for 2FA.

I've tried using Google 2FA, and it worked, but I want to try to make a module so that everyone can easily use it

download duo_php lib here https://github.com/duosecurity/duo_php
extract to FrontAccounting folder.

open your /fa/path/folder/index.php
and replace with this code:

<?php
$path_to_root=".";
if (!file_exists($path_to_root.'/config_db.php'))
  header("Location: ".$path_to_root."/install/index.php");

$page_security = 'SA_OPEN';
ini_set('xdebug.auto_trace',1);
include_once("includes/session.inc");

add_access_extensions();
$app = &$_SESSION["App"];
if (isset($_GET['application']))
  $app->selected_application = $_GET['application'];

if(isset($_SESSION["wa_current_user"]->loginname) && $_SESSION["wa_current_user"]->loginname != "" && !isset($_POST['sig_response'])){
  define('AKEY', "THISISMYSUPERSECRETCUSTOMERKEYDONOTSHARE");
  define('IKEY', "IKEY");
  define('SKEY', "SKEY");
  define('HOST', "api-xxxxxxxx.duosecurity.com");
  
  require_once 'duo_php/src/Web.php';
  $sig_request = Duo\Web::signRequest(IKEY, SKEY, AKEY, $_SESSION["wa_current_user"]->loginname);
?>
  <style>
  iframe#duo_iframe { margin-top: 100px; width: 450px;height: 400px; border-style: none; }
  </style>
  <script type="text/javascript" src="duo_php/js/Duo-Web-v2.js"></script>
  <center><iframe id="duo_iframe" data-host="<?php echo HOST; ?>" data-sig-request="<?php echo $sig_request; ?>"></iframe></center>
<?php
} else if(isset($_POST['sig_response'])){
  if (!isset($_SESSION["App"])) {
    $_SESSION["App"] = new front_accounting();
    $_SESSION["App"]->init();
  }
  
  $app->display();
}

now i can,,,
just change the submit_cell like this

submit_cells('SubmitLogin', _("Login iBanking"), true, '', false);

i want to create custom form, but i cant retrieve the request by method POST/GET, the request always use ajax JsHttpRequest.
how to change method request used PHP POST method?

this my script:

start_form(true);
start_table(TABLESTYLE_NOBORDER);
start_row();

date_cells(_("From:"), 'FromDate');
date_cells(_("To:"), 'ToDate');
banking_types_list_cells(_("Banking Type:"), "BankingType");
submit_cells('SubmitLogin', _("Login iBanking"), true, '', 'default');
end_row();
end_table();
end_form();

i use this for retrieve:

if(get_post('SubmitLogin') || isset($_POST['SubmitLogin']) || isset($_GET['SubmitLogin'])) 

and i try use this too:

json_decode(file_get_contents('php://input'), true);

but the both still can't retrieve.

thanks
ardy

thanks for replying, problem solved.

can i do generate report without jshttprequest?

everything is ok if i only select date range for 1 month.
but I want to print report GL Trans, for date range is 6 months and for all Chart of Accounts (have 196 numbers) to report_pdf.
the jshttprequest is stop, I don't think anything is wrong, maybe jshttpresquest can't process too much data.

what should i do to solve this problem?
please help me.

thanks
ardy