Merge branch 'dev-signup-check-pubkey'
This commit is contained in:
commit
8d5d361e38
|
@ -0,0 +1,25 @@
|
||||||
|
<?php
|
||||||
|
if(isset($_GET['vendeur']))
|
||||||
|
{
|
||||||
|
// Get public key from pseudo
|
||||||
|
$parseUser = $_GET['vendeur'];
|
||||||
|
putenv("parseUser=$parseUser");
|
||||||
|
$silkPubKey = system('curl -s https:\/\/duniter-g1.p2p.legal/wot/members | grep -w -i -B 1 $parseUser | grep "pubkey" | awk -F \'"\' \'{ print $4 }\'');
|
||||||
|
|
||||||
|
if (empty($silkPubKey))
|
||||||
|
{
|
||||||
|
$silkPubKeyUser = shell_exec('curl -s https:\/\/duniter-g1.p2p.legal/wot/lookup/$parseUser | head | grep -i -w -A 3 "pubkey" | awk -F \'"\' \'{ print $4 }\' | awk \'NF > 0\'');
|
||||||
|
putenv("silkPubKeyUser=$silkPubKeyUser");
|
||||||
|
$silkUser = system('echo "$silkPubKeyUser" | tail -n2 | head -n1');
|
||||||
|
if ($silkUser == $parseUser)
|
||||||
|
{
|
||||||
|
$silkPubKey = system('echo "$silkPubKeyUser" | head -n1');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($silkPubKey))
|
||||||
|
{
|
||||||
|
echo "Aucune clé n'a été trouvé à partir de ce pseudo";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
|
@ -19,7 +19,7 @@ $bdd = new \PDO("mysql:host=$host;dbname=$database_name", $username, $password);
|
||||||
|
|
||||||
|
|
||||||
$params["antenne_slug"] = $antenne_slug;
|
$params["antenne_slug"] = $antenne_slug;
|
||||||
$requete = "SELECT products.*, users.username
|
$requete = "SELECT products.*, users.username, users.pubkey
|
||||||
FROM products
|
FROM products
|
||||||
LEFT JOIN antennes
|
LEFT JOIN antennes
|
||||||
ON antennes.id = products.antenne_id
|
ON antennes.id = products.antenne_id
|
||||||
|
@ -52,12 +52,19 @@ $bdd = new \PDO("mysql:host=$host;dbname=$database_name", $username, $password);
|
||||||
$data .= "<tr style='background:lightblue;color:black;'>
|
$data .= "<tr style='background:lightblue;color:black;'>
|
||||||
<td>$number</td>";
|
<td>$number</td>";
|
||||||
|
|
||||||
$data .= '<td>'.$row['name'].'</td>';
|
$prix = $row['prix'];
|
||||||
|
$vendeur = $row['username'];
|
||||||
|
$produit = $row['name'];
|
||||||
|
$pubkey = $row['pubkey'];
|
||||||
|
$pubkeyShort = substr($pubkey, 0, 8);
|
||||||
|
$vendeur_format = "<a target=\"_blank\" href=\"https://g1.duniter.fr/#/app/wot/$pubkey/\">$vendeur</a>";
|
||||||
|
$cle_pub_format = "<a target=\"_blank\" href=\"https://g1.duniter.fr/api/#/v1/payment/$pubkey?amount=$prix&name=$vendeur&comment=[Achat GMarche] : $produit&preferred_node=https://g1.librelois.fr&redirect_url=https://gmarche.monnaie-libre.fr\" title=$pubkey> $pubkeyShort... </a>";
|
||||||
|
$data .= '<td>'.$produit.'</td>';
|
||||||
$data .= '<td><img src="/uploads/products/'.$antenne_slug.'/'.$row['image'].'" width="100" height="100" /></td>';
|
$data .= '<td><img src="/uploads/products/'.$antenne_slug.'/'.$row['image'].'" width="100" height="100" /></td>';
|
||||||
$data .= '<td>'.$row['username'].'</td>';
|
$data .= '<td>'.$vendeur_format.'</td>';
|
||||||
$data .= '<td></td>';
|
$data .= '<td>'.$cle_pub_format.'</td>';
|
||||||
$data .= '<td>'.$row['quantite'].'</td>';
|
$data .= '<td>'.$row['quantite'].'</td>';
|
||||||
$data .= '<td>'.$row['prix'].'</td>';
|
$data .= '<td>'.$prix.'</td>';
|
||||||
if ($row['username'] == $_GET['nom_connecte'] ) {
|
if ($row['username'] == $_GET['nom_connecte'] ) {
|
||||||
$data .= '<td>';
|
$data .= '<td>';
|
||||||
$data .= '<button onclick="GetProduitsDetails(\'';
|
$data .= '<button onclick="GetProduitsDetails(\'';
|
||||||
|
|
|
@ -20,7 +20,7 @@ $data = '<table class="table table-bordered table-striped">
|
||||||
|
|
||||||
$params["antenne_slug"] = $antenne_slug;
|
$params["antenne_slug"] = $antenne_slug;
|
||||||
|
|
||||||
$requete = "SELECT souhaits.*, users.username
|
$requete = "SELECT souhaits.*, users.username, users.pubkey
|
||||||
FROM souhaits
|
FROM souhaits
|
||||||
LEFT JOIN antennes
|
LEFT JOIN antennes
|
||||||
ON antennes.id = souhaits.antenne_id
|
ON antennes.id = souhaits.antenne_id
|
||||||
|
@ -39,12 +39,19 @@ if ($count > 0)
|
||||||
$data .= "<tr style='background:lightblue;color:black;'>
|
$data .= "<tr style='background:lightblue;color:black;'>
|
||||||
<td>$number</td>";
|
<td>$number</td>";
|
||||||
|
|
||||||
$data .= '<td>'.$row['name'].'</td>';
|
$prix = $row['prix'];
|
||||||
$data .= '<td><img src="/uploads/recherches/'.$antenne_slug.'/'.$row['image'].'" width="100" height="100" /></td>';
|
$vendeur = $row['username'];
|
||||||
$data .= '<td>'.$row['username'].'</td>';
|
$produit = $row['name'];
|
||||||
$data .= '<td></td>';
|
$pubkey = $row['pubkey'];
|
||||||
$data .= '<td>'.$row['quantite'].'</td>';
|
$vendeur_format = "<a target=\"_blank\" href=\"https://g1.duniter.fr/#/app/wot/$pubkey/\">$vendeur</a>";
|
||||||
$data .= '<td>'.$row['prix'].'</td>';
|
|
||||||
|
$pubkeyShort = substr($pubkey, 0, 8);
|
||||||
|
$data .= '<td>'.$produit.'</td>';
|
||||||
|
$data .= '<td><img src="/uploads/products/'.$antenne_slug.'/'.$row['image'].'" width="100" height="100" /></td>';
|
||||||
|
$data .= '<td>'.$vendeur_format.'</td>';
|
||||||
|
$data .= '<td>'.$pubkeyShort.'...</td>';
|
||||||
|
$data .= '<td>'.$row['quantite'].'</td>';
|
||||||
|
$data .= '<td>'.$prix.'</td>';
|
||||||
$data .= '<td>';
|
$data .= '<td>';
|
||||||
$data .= '<button onclick="GetRecherchesDetails(\'';
|
$data .= '<button onclick="GetRecherchesDetails(\'';
|
||||||
$data .= $row['id'];
|
$data .= $row['id'];
|
||||||
|
|
|
@ -24,8 +24,13 @@ img {
|
||||||
height: auto;
|
height: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
a :hover {
|
#la_page a {
|
||||||
background-color: lightgreen;
|
color: #5B5EA6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.breadcrumbs a:hover {
|
||||||
|
/* background-color: lightgreen; */
|
||||||
|
font-size: 1.03em;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -103,6 +108,57 @@ header.header img {
|
||||||
margin: 5px auto;
|
margin: 5px auto;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#signupContain {
|
||||||
|
background-color: lightgray;
|
||||||
|
opacity: 0.9;
|
||||||
|
margin: auto;
|
||||||
|
margin-top: 1rem;
|
||||||
|
padding:1rem;
|
||||||
|
width: 550px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#firstnameDiv {
|
||||||
|
width: 49%;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
#lastnameDiv {
|
||||||
|
width: 50%;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
#champsOgligatoire {
|
||||||
|
float: right;
|
||||||
|
font-size: 0.8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#validSignup {
|
||||||
|
display: block;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************/
|
||||||
|
/* LOADING PUBKEY */
|
||||||
|
/******************************************************************/
|
||||||
|
|
||||||
|
#cle_pub {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loadingPubkey {
|
||||||
|
display: none;
|
||||||
|
height: 20px;
|
||||||
|
width: 20px;
|
||||||
|
content:url('../images/ajax-loader.gif')
|
||||||
|
}
|
||||||
|
|
||||||
|
body.loading .loadingPubkey {
|
||||||
|
overflow: hidden;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************/
|
/******************************************************************/
|
||||||
/* POUR MOBILES */
|
/* POUR MOBILES */
|
||||||
/******************************************************************/
|
/******************************************************************/
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 673 B |
|
@ -1,4 +1,5 @@
|
||||||
// Add Record
|
// Add Record
|
||||||
|
|
||||||
function addRecord(antenne_slug, antenne_id, nom_connecte, id_user) {
|
function addRecord(antenne_slug, antenne_id, nom_connecte, id_user) {
|
||||||
|
|
||||||
var produit = $("#produit").val();
|
var produit = $("#produit").val();
|
||||||
|
|
|
@ -58,10 +58,11 @@ class SignupAction
|
||||||
}
|
}
|
||||||
$params = $request->getParsedBody();
|
$params = $request->getParsedBody();
|
||||||
$validator = (new Validator($params))
|
$validator = (new Validator($params))
|
||||||
->required('username', 'email', 'password', 'password_confirm', 'firstname', 'lastname', 'created_at')
|
->required('username', 'pubkey', 'email', 'password', 'password_confirm', 'created_at')
|
||||||
->length('username', 3)
|
->length('username', 3)
|
||||||
->length('firstname', 2)
|
->length('pubkey', 43)
|
||||||
->length('lastname', 2)
|
->length('firstname', 0)
|
||||||
|
->length('lastname', 0)
|
||||||
->email('email')
|
->email('email')
|
||||||
->confirm('password')
|
->confirm('password')
|
||||||
->length('password', 4)
|
->length('password', 4)
|
||||||
|
@ -70,6 +71,7 @@ class SignupAction
|
||||||
if ($validator->isValid()) {
|
if ($validator->isValid()) {
|
||||||
$userParams = [
|
$userParams = [
|
||||||
'username' => $params['username'],
|
'username' => $params['username'],
|
||||||
|
'pubkey' => $params['pubkey'],
|
||||||
'firstname'=> $params['firstname'],
|
'firstname'=> $params['firstname'],
|
||||||
'lastname'=> $params['lastname'],
|
'lastname'=> $params['lastname'],
|
||||||
'email' => $params['email'],
|
'email' => $params['email'],
|
||||||
|
@ -89,6 +91,7 @@ class SignupAction
|
||||||
'errors' => $errors,
|
'errors' => $errors,
|
||||||
'user' => [
|
'user' => [
|
||||||
'username' => $params['username'],
|
'username' => $params['username'],
|
||||||
|
'pubkey' => $params['pubkey'],
|
||||||
'email' => $params['email'],
|
'email' => $params['email'],
|
||||||
'firstname'=> $params['firstname'],
|
'firstname'=> $params['firstname'],
|
||||||
'lastname'=> $params['lastname'],
|
'lastname'=> $params['lastname'],
|
||||||
|
|
|
@ -1,16 +1,66 @@
|
||||||
{% extends 'layout.twig' %}
|
{% extends 'layout.twig' %}
|
||||||
|
|
||||||
{% block body %}
|
{% block body %}
|
||||||
<div class="container" style="background-color: lightgray;opacity: 0.9;margin: 1rem;padding:1rem;">
|
<!-- <script type="text/javascript" src="../../../public/js/script.js"></script>-->
|
||||||
|
<div class="container" id="signupContain">
|
||||||
<form action="{{ path('account.signup') }}" method="post">
|
<form action="{{ path('account.signup') }}" method="post">
|
||||||
{{ csrf_input() }}
|
{{ csrf_input() }}
|
||||||
{{ field('username', user.username, "Pseudo") }}
|
{{ field('username', user.username, "Pseudo *") }}
|
||||||
{{ field('firstname', user.firstname, "Prénom") }} {{ field('lastname', user.lastname, "Nom") }}
|
<div class="loadingPubkey"></div>
|
||||||
{{ field('email', user.email, "Email", {type: 'email'}) }}
|
<div id="livesearch-pubkey"></div>
|
||||||
{{ field('password', null, "Mot de passe", {type: 'password'}) }}
|
<div id=cle_pub>{{ field('pubkey', user.pubkey, "Clé publique*") }}</div>
|
||||||
{{ field('password_confirm', null, "Confirmez le mot de passe", {type: 'password'}) }}
|
<div id=lastnameDiv>{{ field('lastname', user.lastname, "Nom") }}</div>
|
||||||
|
<div id=firstnameDiv>{{ field('firstname', user.firstname, "Prénom") }}</div>
|
||||||
|
{{ field('email', user.email, "Email *", {type: 'email'}) }}
|
||||||
|
{{ field('password', null, "Mot de passe *", {type: 'password'}) }}
|
||||||
|
{{ field('password_confirm', null, "Confirmez le mot de passe *", {type: 'password'}) }}
|
||||||
|
<div id="champsOgligatoire">* Champs obligatoires</div>
|
||||||
{{ field('created_at', date(), null, {type: 'hidden'}) }}
|
{{ field('created_at', date(), null, {type: 'hidden'}) }}
|
||||||
<button class="btn btn-primary">S'inscrire</button>
|
<button class="btn btn-primary" id="validSignup">S'inscrire</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
var textInput = document.getElementById('username');
|
||||||
|
var timeout = null;
|
||||||
|
$body = $("body");
|
||||||
|
(document.getElementById("pubkey").value) ? noPubKey("block") : true ;
|
||||||
|
|
||||||
|
textInput.onkeyup = function (e) {
|
||||||
|
clearTimeout(timeout);
|
||||||
|
timeout = setTimeout(function () {
|
||||||
|
xmlhttp=new XMLHttpRequest();
|
||||||
|
xmlhttp.onreadystatechange=function() {
|
||||||
|
if (this.readyState==4 && this.status==200) {
|
||||||
|
pubkeyAnswer=this.responseText;
|
||||||
|
pubkeyIsNull = pubkeyAnswer.includes("Aucune clé n'a été trouvé à partir de ce pseudo");
|
||||||
|
// (pubkeyIsNull) ? sentenceAnswer=this.responseText : sentenceAnswer="j'ai trouvé ta clé publique Ḡ1 !";
|
||||||
|
// sentenceAnswer=this.responseText;
|
||||||
|
(pubkeyIsNull) ? document.getElementById("livesearch-pubkey").innerHTML=pubkeyAnswer : document.getElementById("livesearch-pubkey").innerHTML='ḠTrouvé une clé ! =)<br>Clé publique: ' + pubkeyAnswer;
|
||||||
|
(pubkeyIsNull) ? document.getElementById("pubkey").value="" : document.getElementById("pubkey").value=pubkeyAnswer;
|
||||||
|
document.getElementById("livesearch-pubkey").style.border="2px solid #A5ACB2";
|
||||||
|
(pubkeyIsNull) ? noPubKey("block") : noPubKey("hide");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$body.addClass("loading");
|
||||||
|
xmlhttp.open("GET","/ajax/getG1PubKey.php?vendeur="+textInput.value,true);
|
||||||
|
xmlhttp.send();
|
||||||
|
}, 800);
|
||||||
|
};
|
||||||
|
|
||||||
|
function noPubKey(state) {
|
||||||
|
$body.removeClass("loading");
|
||||||
|
var textMbr = document.getElementById("cle_pub");
|
||||||
|
if (state == "hide"){
|
||||||
|
textMbr.style.display = "none";
|
||||||
|
} else {
|
||||||
|
textMbr.style.display = "block";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
|
|
|
@ -177,10 +177,6 @@
|
||||||
<div id="add_preview" style="border:1px solid black;width:160px;height:160px;"> </div>
|
<div id="add_preview" style="border:1px solid black;width:160px;height:160px;"> </div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
|
||||||
<label for="cle_pub">Clé publique</label>
|
|
||||||
<input type="text" id="cle_pub" placeholder="Clé publique" class="form-control"/>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="quantite">Quantité</label>
|
<label for="quantite">Quantité</label>
|
||||||
<input type="number" id="quantite" placeholder="Quantité" class="form-control"/>
|
<input type="number" id="quantite" placeholder="Quantité" class="form-control"/>
|
||||||
|
|
Loading…
Reference in New Issue