-
{{ teams[my.team_id].name }}
-
edit
+
{{ my.name }}
+
edit
{{ teams[my.team_id].rank }}e sur {{ teams_count }} –
{{ my.score }} points
diff --git a/frontend/static/js/app.js b/frontend/static/js/app.js
index a566958c..3b323062 100644
--- a/frontend/static/js/app.js
+++ b/frontend/static/js/app.js
@@ -195,10 +195,66 @@ angular.module("FICApp")
$scope.my.exercices[$rootScope.current_exercice].submitted = true;
};
})
- .controller("MyTeamController", function($scope, $rootScope) {
+ .controller("MyTeamController", function($scope, $http, $rootScope, $timeout) {
$rootScope.current_theme = 0;
$rootScope.current_exercice = 0;
- $rootScope.title = "Edit team";
+ if ($scope.my) {
+ $rootScope.title = $scope.my.name;
+ $rootScope.authors = $scope.my.members.map(function (cur) {
+ return cur.firstname.capitalize() + " " + cur.lastname.capitalize();
+ }).join(", ");
+ }
+ $scope.newName = "";
+ $rootScope.message = "";
+ $rootScope.sberr = "";
+
+ $scope.tsubmit = function() {
+ $rootScope.sberr = "";
+ if ($scope.newName.length < 1) {
+ $rootScope.messageClass = {"text-danger": true};
+ $rootScope.sberr = "Nom d'équipe invalide: pas d'entrée.";
+ return false;
+ }
+ else if ($scope.newName.length > 32) {
+ $rootScope.messageClass = {"text-danger": true};
+ $rootScope.sberr = "Nom d'équipe invalide: pas plus de 32 caractères.";
+ return false;
+ }
+ else if (!$scope.newName.match(/^[A-Za-z0-9 àéèêëîïôùûü_-]+$/)) {
+ $rootScope.messageClass = {"text-danger": true};
+ $rootScope.sberr = "Nom d'équipe invalide: seuls les caractères alpha-numériques sont autorisés.";
+ return false;
+ }
+
+ $http({
+ url: "/submit/name",
+ method: "POST",
+ data: {newName: $scope.newName}
+ }).success(function(data, status, header, config) {
+ $rootScope.messageClass = {"text-success": true};
+ $rootScope.message = data.errmsg;
+
+ var checkDiff = function() {
+ $http.get("/my.json").success(function(my) {
+ console.log(my.name);
+ if ($scope.my.name != my.name) {
+ $scope.newName = "";
+ $rootScope.message = "";
+ $rootScope.refresh();
+ } else {
+ $timeout(checkDiff, 750);
+ }
+ });
+ };
+ checkDiff();
+ }).error(function(data, status, header, config) {
+ $rootScope.messageClass = {"text-danger": true};
+ $rootScope.message = data.errmsg;
+ if (status != 402) {
+ $rootScope.sberr = "Une erreur est survenue lors de l'envoi. Veuillez réessayer dans quelques instants.";
+ }
+ });
+ };
})
.controller("RankController", function($scope, $rootScope) {
$rootScope.current_theme = 0;
diff --git a/frontend/static/views/home.html b/frontend/static/views/home.html
index 40a1c778..9a853eca 100644
--- a/frontend/static/views/home.html
+++ b/frontend/static/views/home.html
@@ -1,5 +1,15 @@
-
Bienvenue !
+
Bienvenue et , {{ member.firstname | capitalize }} {{ member.lastname | capitalize }} !
+
+ Félicitations ! vous êtes actuellement connecté à l'espace de votre
+ équipe {{ teams[my.team_id].name }}. Vous pouvez changer ce nom
+ dès maintenant en vous rendant sur la page de votre
+ équipe.
+
+
+ Les membres de votre équipes ne sont pas encore enregistrés.
+ Passez voir l'équipe serveur pour corriger cela.
+
Compromissions, défauts de configuration, utilisations malveillantes,
contournements des règles de sécurité, … tous les jours nous mettons
diff --git a/frontend/static/views/team-edit.html b/frontend/static/views/team-edit.html
new file mode 100644
index 00000000..e04a8749
--- /dev/null
+++ b/frontend/static/views/team-edit.html
@@ -0,0 +1,37 @@
+
+
Votre équipe est composée de :
+
+ Passez voir l'équipe serveur pour compléter ces informations.
+
+
+ -
+ {{ member.firstname | capitalize }}
+ {{ member.nickname }}
+ {{ member.lastname | capitalize }}
+ - {{ member.company}}
+
+
+
+
+
+
Changer de nom d'équipe
+
+
Votre demande a bien été envoyée !{{ sberr }} {{ message }}
+
+
+
diff --git a/frontend/submit.go b/frontend/submit.go
index ca0bbdaa..adf4491a 100644
--- a/frontend/submit.go
+++ b/frontend/submit.go
@@ -32,7 +32,7 @@ func (s SubmissionHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
// Extract URL arguments
var sURL = strings.Split(r.URL.Path, "/")
- if len(sURL) != 3 && len(sURL) != 4 {
+ if len(sURL) != 3 {
http.Error(w, "{\"errmsg\":\"Requête invalide.\"}", http.StatusBadRequest)
return
}
@@ -46,10 +46,11 @@ func (s SubmissionHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
if team, err := strconv.Atoi(sURL[1]); err != nil {
http.Error(w, "{\"errmsg\":\"Requête invalide.\"}", http.StatusBadRequest)
return
- } else if exercice, err := strconv.Atoi(sURL[2]); err != nil {
+ } else if _, err := strconv.Atoi(sURL[2]); sURL[2] != "name" && err != nil {
http.Error(w, "{\"errmsg\":\"Requête invalide.\"}", http.StatusBadRequest)
return
} else {
+ exercice := sURL[2]
if _, err := os.Stat(path.Join(SubmissionDir, fmt.Sprintf("%d", team))); os.IsNotExist(err) {
log.Println("Creating submission directory for", team)
if err := os.MkdirAll(path.Join(SubmissionDir, fmt.Sprintf("%d", team)), 0777); err != nil {
@@ -60,8 +61,8 @@ func (s SubmissionHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
}
// Previous submission not treated
- if _, err := os.Stat(path.Join(SubmissionDir, fmt.Sprintf("%d", team), fmt.Sprintf("%d", exercice))); !os.IsNotExist(err) {
- http.Error(w, "{\"errmsg\":\"Du calme ! une tentative est déjà en cours de traitement.\"}", http.StatusPaymentRequired)
+ if _, err := os.Stat(path.Join(SubmissionDir, fmt.Sprintf("%d", team), exercice)); !os.IsNotExist(err) {
+ http.Error(w, "{\"errmsg\":\"Du calme ! une requête est déjà en cours de traitement.\"}", http.StatusPaymentRequired)
return
}
@@ -81,7 +82,7 @@ func (s SubmissionHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
}
// Store content in file
- if file, err := os.Create(path.Join(SubmissionDir, fmt.Sprintf("%d", team), fmt.Sprintf("%d", exercice))); err != nil {
+ if file, err := os.Create(path.Join(SubmissionDir, fmt.Sprintf("%d", team), exercice)); err != nil {
log.Println("Unable to open exercice file:", err)
http.Error(w, "{\"errmsg\":\"Internal server error. Please retry in few seconds.\"}", http.StatusInternalServerError)
return
diff --git a/libfic/team_my.go b/libfic/team_my.go
index 7d9fc946..fad85c4c 100644
--- a/libfic/team_my.go
+++ b/libfic/team_my.go
@@ -25,6 +25,7 @@ type myTeamExercice struct {
}
type myTeam struct {
Id int64 `json:"team_id"`
+ Name string `json:"name"`
Points int64 `json:"score"`
Members []Member `json:"members"`
Exercices map[string]myTeamExercice `json:"exercices"`
@@ -35,6 +36,7 @@ func MyJSONTeam(t *Team, started bool) (interface{}, error) {
if t == nil {
ret.Id = 0
} else {
+ ret.Name = t.Name
ret.Id = t.Id
ret.Points, _ = t.GetPoints()
if members, err := t.GetMembers(); err == nil {