admin: Double check before doing dangerous actions in settings panel
Suggested-by: Nicolas Ribeyrolle <nicolas.ribeyrolle@epita.fr>
This commit is contained in:
parent
8e618565ad
commit
846f2ce8a4
2 changed files with 34 additions and 10 deletions
|
@ -440,6 +440,7 @@ angular.module("FICApp")
|
||||||
})
|
})
|
||||||
|
|
||||||
.controller("SettingsController", function($scope, $rootScope, Settings, ROSettings, $location, $http, $interval) {
|
.controller("SettingsController", function($scope, $rootScope, Settings, ROSettings, $location, $http, $interval) {
|
||||||
|
$scope.displayDangerousActions = false;
|
||||||
$scope.config = Settings.get();
|
$scope.config = Settings.get();
|
||||||
$scope.config.$promise.then(function(response) {
|
$scope.config.$promise.then(function(response) {
|
||||||
response.enableExerciceDepend = response.unlockedChallengeDepth >= 0;
|
response.enableExerciceDepend = response.unlockedChallengeDepth >= 0;
|
||||||
|
@ -521,16 +522,25 @@ angular.module("FICApp")
|
||||||
var d = new Date(ts + 120000);
|
var d = new Date(ts + 120000);
|
||||||
this.config.activateTime = d.toISOString();
|
this.config.activateTime = d.toISOString();
|
||||||
}
|
}
|
||||||
$scope.reset = function(type) {
|
$scope.reset = function(type) {
|
||||||
if (confirm("Êtes-vous sûr ?")) {
|
var txts = {
|
||||||
$http.post("/api/reset", {"type": type}).then(function(time) {
|
"challenges": "En validant, vous retirerez toutes les données statiques des challenges.",
|
||||||
$rootScope.newBox('success', type + 'reseted');
|
"teams": "En validant, vous supprimerez l'ensemble des équipes enregistreées.",
|
||||||
$location.url("/");
|
"game": "En validant, vous supprimerez toutes les tentatives, les validations, ... faites par les équipes.",
|
||||||
}, function(response) {
|
|
||||||
$rootScope.newBox('danger', 'An error occurs when reseting ' + type + ':', response.data.errmsg);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
};
|
$rootScope.newYesNoBox('warning', txts[type], 'Êtes-vous sûr de vouloir continuer ?',
|
||||||
|
function() {
|
||||||
|
if (confirm("Êtes-vous vraiment sûr ?\n" + txts[type])) {
|
||||||
|
$http.post("/api/reset", {"type": type}).then(function(time) {
|
||||||
|
$rootScope.newBox('success', type + 'reseted');
|
||||||
|
$location.url("/");
|
||||||
|
}, function(response) {
|
||||||
|
$rootScope.newBox('danger', 'An error occurs when reseting ' + type + ':', response.data.errmsg);
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
$scope.deepSyncInProgress = false;
|
$scope.deepSyncInProgress = false;
|
||||||
$scope.deepSync = function(type) {
|
$scope.deepSync = function(type) {
|
||||||
$rootScope.newYesNoBox('warning', 'Faire une synchronisation intégrale ?', '',
|
$rootScope.newYesNoBox('warning', 'Faire une synchronisation intégrale ?', '',
|
||||||
|
|
|
@ -175,7 +175,21 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<div class="row mb-5">
|
<div class="card mb-5" ng-show="timeProgression && !displayDangerousActions">
|
||||||
|
<div class="card-header bg-secondary text-light">
|
||||||
|
Synchronisation et suppressions de masse
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="form-check">
|
||||||
|
<label class="custom-control custom-checkbox">
|
||||||
|
<input class="custom-control-input" type="checkbox" ng-model="displayDangerousActions">
|
||||||
|
<strong class="custom-control-label">Je sais ce que le challenge a démarré ET <span style="text-decoration: underline red;">j'ai réalisé une sauvegarde de la base de données il y a moins d'une minute</span> ET je sais que c'est <span style="text-decoration: underline yellow;">une très mauvaise idée de cocher cette case</span>, mais j'y suis obligé pour de bonnes raisons.</strong>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row mb-5" ng-show="!timeProgression || displayDangerousActions">
|
||||||
<div class="col-8 card text-light bg-dark">
|
<div class="col-8 card text-light bg-dark">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<dl class="row">
|
<dl class="row">
|
||||||
|
|
Reference in a new issue