Commit a1510c3e authored by Nastuzzi Samy's avatar Nastuzzi Samy
Browse files

Config rights

Authorize only staff members to edit config
Edit all rights
Fix connection bug
parent a9c5e23d
......@@ -109,7 +109,15 @@ public abstract class ArticleGroupActivity extends BaseActivity {
configButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View view) {
configApp();
hasRights(getString(R.string.configurate_by_default), new String[]{
"STAFF",
"GESAPPLICATIONS"
}, new Runnable() {
@Override
public void run() {
configApp();
}
});
}
});
......@@ -144,11 +152,19 @@ public abstract class ArticleGroupActivity extends BaseActivity {
configButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
config.setFoundation(-1, "");
config.setGroupList(new ObjectMapper().createObjectNode());
config.setCanCancel(true);
hasRights(getString(R.string.configurate_by_default), new String[]{
"STAFF",
"GESAPPLICATIONS"
}, new Runnable() {
@Override
public void run() {
config.setFoundation(-1, "");
config.setGroupList(new ObjectMapper().createObjectNode());
config.setCanCancel(true);
startMainActivity(ArticleGroupActivity.this);
startMainActivity(ArticleGroupActivity.this);
}
});
}
});
......
......@@ -6,9 +6,15 @@ import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ArrayNode;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import fr.utc.simde.payutc.tools.CASConnexion;
import fr.utc.simde.payutc.tools.Config;
......@@ -64,6 +70,60 @@ public abstract class BaseActivity extends NFCActivity {
disconnect();
}
protected void hasRights(final String titre, final String[] rightList, final Runnable runnable) {
dialog.startLoading(BaseActivity.this, getString(R.string.information_collection), getString(R.string.user_rights_list_collecting));
new Thread() {
@Override
public void run() {
try {
List<String> rights = Arrays.asList(rightList);
List<String> sameRights = new ArrayList<String>();
nemopaySession.getAllMyRights();
Thread.sleep(100);
JsonNode myRightList = nemopaySession.getRequest().getJSONResponse();
if (myRightList.has("0")) {
for (JsonNode myRight : myRightList.get("0")) {
if (rights.contains(myRight.textValue()))
sameRights.add(myRight.textValue());
}
}
if (myRightList.has(String.valueOf(nemopaySession.getFoundationId()))) {
for (JsonNode myRight : myRightList.get(String.valueOf(nemopaySession.getFoundationId()))) {
if (rights.contains(myRight.textValue()))
sameRights.add(myRight.textValue());
}
}
if (rights.size() == sameRights.size())
runOnUiThread(runnable);
else {
runOnUiThread(new Runnable() {
@Override
public void run() {
dialog.stopLoading();
dialog.errorDialog(BaseActivity.this, titre, nemopaySession.forbidden(rightList));
}
});
}
} catch (Exception e) {
Log.e(LOG_TAG, "error: " + e.getMessage());
runOnUiThread(new Runnable() {
@Override
public void run() {
dialog.stopLoading();
dialog.errorDialog(BaseActivity.this, getString(R.string.user_rights_list_collecting), getString(R.string.error_rights));
}
});
}
}
}.start();
}
protected void startMainActivity(final Activity activity) {
disconnect();
......
......@@ -92,7 +92,14 @@ public class MainActivity extends BaseActivity {
public void onResume() {
super.onResume();
disconnect();
setConfig();
if (!nemopaySession.isRegistered()) {
final String key = sharedPreferences.getString("key", "");
if (!key.equals(""))
setKey(key);
}
}
@Override
......@@ -254,9 +261,14 @@ public class MainActivity extends BaseActivity {
try {
nemopaySession.loginCas(casConnexion.getTicket(), service);
Thread.sleep(1000);
Thread.sleep(100);
} catch (Exception e) {
Log.e(LOG_TAG, "error: " + e.getMessage());
try { // Des fois, la session est null
nemopaySession.loginCas(casConnexion.getTicket(), service);
Thread.sleep(100);
} catch (Exception e1) {
Log.e(LOG_TAG, "error: " + e.getMessage());
}
}
runOnUiThread(new Runnable() {
......@@ -288,34 +300,38 @@ public class MainActivity extends BaseActivity {
nemopaySession.loginBadge(badgeId, pin);
Thread.sleep(100);
} catch (final Exception e) {
Log.e(LOG_TAG, "error: " + e.getMessage());
try { // Des fois, la session est null
nemopaySession.loginBadge(badgeId, pin);
Thread.sleep(100);
} catch (final Exception e1) {
Log.e(LOG_TAG, "error: " + e.getMessage());
runOnUiThread(new Runnable() {
@Override
public void run() {
if (nemopaySession.getRequest().getResponseCode() == 400)
dialog.errorDialog(MainActivity.this, getString(R.string.badge_dialog), getString(R.string.badge_pin_error_not_recognized));
else
dialog.errorDialog(MainActivity.this, getString(R.string.badge_dialog), e.getMessage());
}
});
}
}
if (nemopaySession.isConnected()) {
runOnUiThread(new Runnable() {
@Override
public void run() {
if (nemopaySession.getRequest().getResponseCode() == 400)
dialog.errorDialog(MainActivity.this, getString(R.string.badge_dialog), getString(R.string.badge_pin_error_not_recognized));
else
dialog.errorDialog(MainActivity.this, getString(R.string.badge_dialog), e.getMessage());
dialog.stopLoading();
try {
startFoundationListActivity(MainActivity.this);
} catch (Exception e) {
Log.e(LOG_TAG, "error: " + e.getMessage());
}
}
});
}
if (!nemopaySession.isConnected())
return;
runOnUiThread(new Runnable() {
@Override
public void run() {
dialog.stopLoading();
try {
startFoundationListActivity(MainActivity.this);
} catch (Exception e) {
Log.e(LOG_TAG, "error: " + e.getMessage());
}
}
});
}
}).start();
}
......
......@@ -31,6 +31,7 @@ public class NemopaySession {
private HTTPRequest request;
private String sessionNull;
private String notLogged;
private String noRight;
private String noRights;
......@@ -59,6 +60,7 @@ public class NemopaySession {
for (int i = 0; i < Math.min(keys.length, values.length); ++i)
this.allRights.put(keys[i], values[i]);
this.sessionNull = activity.getString(R.string.session_null);
this.notLogged = activity.getString(R.string.no_longer_connected);
this.noRightsNeeded = activity.getString(R.string.no_need_rights);
this.noRight = activity.getString(R.string.no_right);
......@@ -111,7 +113,7 @@ public class NemopaySession {
put("pur_id", Integer.toString(purchaseId));
}},
new String[]{
"sale"
"POSS3"
}
);
}
......@@ -137,11 +139,21 @@ public class NemopaySession {
put("obj_ids", obj_ids);
}},
new String[]{
"sale"
"POSS3"
}
);
}
public int getAllMyRights() throws Exception {
if (!isConnected())
throw new Exception(this.notLogged);
return request(
"USERRIGHT",
"getAllMyRights"
);
}
public int getBuyerInfoByLogin(final String login) throws Exception {
if (!isConnected())
throw new Exception(this.notLogged);
......@@ -153,7 +165,7 @@ public class NemopaySession {
put("login", login);
}},
new String[]{
"sale"
"POSS3"
}
);
}
......@@ -171,7 +183,7 @@ public class NemopaySession {
put("badge_id", badgeId);
}},
new String[]{
"sale"
"POSS3"
}
);
}
......@@ -190,7 +202,7 @@ public class NemopaySession {
put("fun_id", Integer.toString(foundationId));
}},
new String[]{
"sale"
"POSS3"
}
);
}
......@@ -209,7 +221,7 @@ public class NemopaySession {
put("fun_id", Integer.toString(foundationId));
}},
new String[]{
"sale"
"POSS3"
}
);
}
......@@ -228,7 +240,7 @@ public class NemopaySession {
put("fun_id", Integer.toString(foundationId));
}},
new String[]{
"sale"
"POSS3"
}
);
}
......@@ -241,7 +253,7 @@ public class NemopaySession {
"POSS3",
"getFundations",
new String[]{
"sale"
"POSS3"
}
);
}
......@@ -306,6 +318,9 @@ public class NemopaySession {
throw new Exception(this.notLogged);
if (response.has("sessionid") && response.has("name")) {
if (response.get("sessionid").textValue() == null)
throw new Exception(this.sessionNull);
this.session = response.get("sessionid").textValue();
this.name = response.get("name").textValue();
this.key = key;
......@@ -328,7 +343,7 @@ public class NemopaySession {
put("pin", pin);
}},
new String[]{
"sale"
"POSS3"
}
);
......@@ -339,6 +354,9 @@ public class NemopaySession {
throw new Exception(this.notLogged);
if (response.has("sessionid") && response.has("username")) {
if (response.get("sessionid").textValue() == null)
throw new Exception(this.sessionNull);
this.session = response.get("sessionid").textValue();
this.username = response.get("username").textValue();
}
......@@ -365,6 +383,9 @@ public class NemopaySession {
throw new Exception(this.notLogged);
if (response.has("sessionid") && response.has("username")) {
if (response.get("sessionid").textValue() == null)
throw new Exception(this.sessionNull);
this.session = response.get("sessionid").textValue();
this.username = response.get("username").textValue();
}
......
......@@ -61,6 +61,7 @@
<string name="badge_pin_error_not_recognized">Badge ou code PIN non reconnu</string>
<string name="badge_error_not_recognized">Badge non reconnu (compte PayUTC peut-être non existant)</string>
<string name="badge_pin_not_initialized">Pour pouvoir se connecter via son badge, il est impératif d\'avoir configuré son code PIN sur https://pay.utc.fr/</string>
<string name="session_null">La session n\'a pas été correctement initialisé. Il est nécessaire de se reconnecter</string>
<string name="nemopay_connection">Connexion à Nemopay</string>
<string name="nemopay_connection_verification">Vérification de la connexion à Nemopay</string>
<string name="nemopay_no_longer_connected">Application déconnectée. Nécessité de se reconnecter</string>
......@@ -87,6 +88,7 @@
<string name="article_error_0">n\'a aucun article à vendre</string>
<string name="article_error_0_categorie_not_0">Toutes les catégories sont vides</string>
<string name="buyer_info_collecting">Récupération des informations de la personne</string>
<string name="user_rights_list_collecting">Récupération des droits de la personne</string>
<string name="no_purchases">Aucun article acheté dernièrement</string>
<string name="transaction_in_progress">Transaction en cours</string>
<string name="cancel_transaction">Annuler une transaction</string>
......@@ -110,160 +112,32 @@
<string name="no_right">Il est nécessaire d\'avoir au moins le droit suivant:</string>
<string name="no_rights">Il est nécessaire d\'avoir au moins les droits suivants:</string>
<string name="no_need_rights">Aucun droit spécifique n\'est nécessaire</string>
<string name="error_rights">Impossible de récupérer les droits de la personne</string>
<string name="not_found">n\'a pas réussi à trouver l\'élement souhaité</string>
<string name="bad_request">n\'a pas compris la requête reçue</string>
<string name="internal_error">a renvoyé une erreur interne (contacter un adminstrateur si cela se reproduit)</string>
<string name="error_request">a renvoyé l\'erreur HTTP suivante: </string>
<string-array name="rights_keys">
<item>Accès en lecture seule sur les paramètres</item>
<item>add_free</item>
<item>offline_app</item>
<item>delegated_auth</item>
<item>social_network_auth</item>
<item>auto_topup</item>
<item>keyboard</item>
<item>widget_code</item>
<item>event_config</item>
<item>sys_config</item>
<item>transfer_consulting</item>
<item>access_control</item>
<item>offline_app_creation</item>
<item>user_creation</item>
<item>live_dashboard</item>
<item>transfert_ask</item>
<item>bill_ask</item>
<item>CB_transfert_ask</item>
<item>IBAN_transfert_ask</item>
<item>app_rights</item>
<item>user_rights</item>
<item>online_cashing</item>
<item>user_account_management</item>
<item>sync_management</item>
<item>accreditation_management</item>
<item>activity_management</item>
<item>app_management</item>
<item>article_management</item>
<item>blocking_management</item>
<item>blocked_card_management</item>
<item>place_config_management</item>
<item>group_management</item>
<item>delivry_management</item>
<item>prize_management</item>
<item>perso_message_management</item>
<item>currency_management</item>
<item>payment_method_management</item>
<item>partner_management</item>
<item>recharge_refund_period_management</item>
<item>refund_management</item>
<item>sys_refund_management</item>
<item>barcode_rule_management</item>
<item>wifi_management</item>
<item>mail_template_management</item>
<item>user_management</item>
<item>suitcase_management</item>
<item>sale_management</item>
<item>event_management</item>
<item>export_generation</item>
<item>file_importation</item>
<item>case_log</item>
<item>house_rental</item>
<item>external_login</item>
<item>staff_member</item>
<item>user_account_update</item>
<item>direct_recharge</item>
<item>ajax_recharg</item>
<item>recharge</item>
<item>username_recharge</item>
<item>inventories</item>
<item>catering_resume</item>
<item>stats</item>
<item>stocks</item>
<item>all_rights</item>
<item>treasury</item>
<item>online_payment_validation</item>
<item>sale</item>
<item>self_sale</item>
<item>transfer</item>
<item>access_control_history_visualisation</item>
<item>recharge_visualisation</item>
<item>sale_visualisation</item>
<item>SALESKEYBOARD</item>
<item>APPLICATIONRIGHT</item>
<item>USERRIGHT</item>
<item>GESAPPLICATIONS</item>
<item>GESUSERS</item>
<item>GESARTICLE</item>
<item>GESSALES</item>
<item>STAFF</item>
<item>POSS3</item>
</string-array>
<string-array name="rights_values">
<item>Accès en lecture seule sur les paramètres</item>
<item>Ajout de gratuités</item>
<item>Application hors ligne</item>
<item>Authentification déléguée</item>
<item>Authentification par réseau social</item>
<item>Auto Topup</item>
<item>Clavier de caisse</item>
<item>Code du widget</item>
<item>Configuration des évènements</item>
<item>Configuration du système</item>
<item>Consultation des reversements système</item>
<item>Contrôle des accès</item>
<item>Création d\'application Offline.</item>
<item>Création de compte utilisateur</item>
<item>Dashboard Live</item>
<item>Demande de remboursement</item>
<item>Demander des factures</item>
<item>Demander des remboursements CB</item>
<item>Demander des remboursements IBAN</item>
<item>Droits des applications</item>
<item>Droits des utilisateurs</item>
<item>Encaissement en ligne</item>
<item>Gestion de compte utilisateur</item>
<item>Gestion de la synchro Weezevent</item>
<item>Gestion des accréditations</item>
<item>Gestion des activités</item>
<item>Gestion des applications</item>
<item>Gestion des articles</item>
<item>Gestion des blocages</item>
<item>Gestion des cartes bloquées</item>
<item>Gestion des configurations de lieux</item>
<item>Gestion des groupes</item>
<item>Gestion des livraisons</item>
<item>Gestion des Lots à gagner</item>
<item>Gestion des messages personalisés</item>
<item>Gestion des monnaies</item>
<item>Gestion des moyens de paiement</item>
<item>Gestion des partenaires</item>
<item>Gestion des périodes de recharge/remboursement</item>
<item>Gestion des reversements</item>
<item>Gestion des reversements système</item>
<item>Gestion des règles pour les barcodes</item>
<item>Gestion des réseaux wifi</item>
<item>Gestion des template de mail</item>
<item>Gestion des utilisateurs</item>
<item>Gestion des Valises de Nemopay</item>
<item>Gestion des articles</item>
<item>Gestion des ventes</item>
<item>Gestion des événements</item>
<item>Génération d\'exports</item>
<item>Import de fichiers</item>
<item>Journal de caisse</item>
<item>Location de foyer</item>
<item>Login exterieur via login+pin</item>
<item>Membre du staff</item>
<item>Mise à jour des utilisateurs par une appli</item>
<item>Recharge en direct</item>
<item>Recharge via ajax</item>
<item>Rechargement</item>
<item>Rechargement direct via username</item>
<item>Réaliser des inventaires</item>
<item>Résumé du catering</item>
<item>Statistiques</item>
<item>Stocks et entrepôts</item>
<item>Tous les droits</item>
<item>Trésorerie</item>
<item>Validation des paiements en ligne</item>
<item>Vente physique</item>
<item>Vente physique self-service</item>
<item>Virement</item>
<item>Visualisation de l\'historique des contrôles d\'accès</item>
<item>Visualisation des sessions de recharge</item>
<item>Visualisation des sessions de vente</item>
</string-array>
<!-- TODO: Remove or change this placeholder text -->
<string name="hello_blank_fragment">Hello blank fragment</string>
</resources>
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment