From e8037beacaa9d9213eb6f5fc72e7a1dfc3805756 Mon Sep 17 00:00:00 2001 From: cyril Date: Fri, 18 Sep 2015 10:32:25 +0200 Subject: [PATCH 1/8] update fonts --- app/assets/stylesheets/app.plugins.scss | 2 +- app/assets/stylesheets/bootstrap_and_overrides.scss | 6 +++--- app/views/application/index.html.erb | 8 ++++---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/assets/stylesheets/app.plugins.scss b/app/assets/stylesheets/app.plugins.scss index c3489d61f..08c4b3241 100644 --- a/app/assets/stylesheets/app.plugins.scss +++ b/app/assets/stylesheets/app.plugins.scss @@ -217,7 +217,7 @@ border: 2px solid $yellow; background-color: transparent; text-transform: uppercase; - font-family: "proxima-nova-condensed"; + font-family: $font-proxima-condensed; font-weight: 600; &:hover { background-color: $yellow; diff --git a/app/assets/stylesheets/bootstrap_and_overrides.scss b/app/assets/stylesheets/bootstrap_and_overrides.scss index 38249fa90..aa27906b0 100644 --- a/app/assets/stylesheets/bootstrap_and_overrides.scss +++ b/app/assets/stylesheets/bootstrap_and_overrides.scss @@ -78,10 +78,10 @@ $link-hover-decoration: underline; // Semibold = 600, Bold = 700, ExtraB = 800 -$font-family-sans-serif: "proxima-nova", Helvetica, Arial, sans-serif !default; -$font-proxima-condensed: "proxima-nova-condensed", Helvetica, Arial, sans-serif !default; +$font-family-sans-serif: "Open Sans", Helvetica, Arial, sans-serif !default; +$font-proxima-condensed: "Open Sans Condensed", Helvetica, Arial, sans-serif !default; $font-family-serif: Georgia, "Times New Roman", Times, serif !default; -$font-felt: "felt-tip-roman", sans-serif; +$font-felt: "Loved by the King", sans-serif; //** Default monospace fonts for ``, ``, and `
`.
 // $font-family-monospace:   Menlo, Monaco, Consolas, "Courier New", monospace !default;
diff --git a/app/views/application/index.html.erb b/app/views/application/index.html.erb
index 282c0fe11..c32fb2f10 100644
--- a/app/views/application/index.html.erb
+++ b/app/views/application/index.html.erb
@@ -7,11 +7,11 @@
   
   
 
-  Fab Lab Manager
-
-  
-  
+  Fab-Manager
 
+  
+  
+  
 
   <%= stylesheet_link_tag "application", media: 'all' %>
   <%= stylesheet_link_tag "app.printer", media: 'print' %>

From d810e7d0180e2bc22ae33e2c009448b74b78dfbc Mon Sep 17 00:00:00 2001
From: David GUENAULT 
Date: Mon, 5 Oct 2015 20:00:37 +0200
Subject: [PATCH 2/8] First work about fabmanager docker container

---
 contrib/docker/Dockerfile      |  85 ++++++++++++++++++++++++
 contrib/docker/Makefile        |  33 +++++++++
 contrib/docker/README.md       | 118 +++++++++++++++++++++++++++++++++
 contrib/docker/fabmanager.conf |  23 +++++++
 contrib/docker/fabmanager.yml  |   6 ++
 5 files changed, 265 insertions(+)
 create mode 100644 contrib/docker/Dockerfile
 create mode 100644 contrib/docker/Makefile
 create mode 100644 contrib/docker/README.md
 create mode 100644 contrib/docker/fabmanager.conf
 create mode 100644 contrib/docker/fabmanager.yml

diff --git a/contrib/docker/Dockerfile b/contrib/docker/Dockerfile
new file mode 100644
index 000000000..ee938ebcb
--- /dev/null
+++ b/contrib/docker/Dockerfile
@@ -0,0 +1,85 @@
+FROM ubuntu:latest
+MAINTAINER David GUENAULT
+
+ENV     GITBRANCH dev 
+
+# base os upgrade
+RUN     apt-get -y update && \
+        apt-get -y upgrade
+
+# prerequisites
+RUN     apt-get -y install git-core libpq-dev redis-server imagemagick npm vim-nox postgresql sudo curl
+
+RUN     apt-get -y install  build-essential openssl libreadline6 libreadline6-dev zlib1g zlib1g-dev \
+        libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf \
+        libc6-dev ncurses-dev automake libtool bison subversion 
+
+# create a setup entry in sudo to gain root privilege without password
+RUN     cp /etc/sudoers /etc/sudoers.orig && \
+        groupadd setup && \
+        echo "%setup ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/setup 
+
+# create user and add it to group setup (gain privilege for everything in setup mode)
+RUN     mkdir -p /home/fabmanager && \
+        useradd fabmanager && \
+        chown fabmanager:fabmanager /home/fabmanager && \
+        usermod -a -G setup fabmanager 
+
+# install rvm
+RUN     su - fabmanager -c "cd /home/fabmanager && \
+            gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 && \
+            curl -sSL https://get.rvm.io | bash -s stable --rails" 
+
+# install dev env
+RUN     chsh -s /bin/bash fabmanager && \
+        su - fabmanager -c "cd /home/fabmanager && \
+        git clone https://github.com/LaCasemate/fab-manager.git && \
+        git checkout $GITBRANCH
+        cd /home/fabmanager/fab-manager && \
+        mkdir -p /home/fabmanager/fab-manager/tmp/pids && \
+        rvm current && \
+        bundle install"  
+ 
+# remove privileges
+RUN     usermod -G fabmanager fabmanager
+
+# make default template unicode compatible
+RUN     /etc/init.d/postgresql start && \
+        su - postgres -c "psql -c \"UPDATE pg_database SET datistemplate = FALSE WHERE datname = 'template1';\"" && \
+        su - postgres -c "psql -c \"DROP DATABASE template1;\"" && \
+        su - postgres -c "psql -c \"CREATE DATABASE template1 WITH TEMPLATE = template0 ENCODING = 'UNICODE';\"" && \
+        su - postgres -c "psql -c \"UPDATE pg_database SET datistemplate = TRUE WHERE datname = 'template1';\"" && \
+        su - postgres -c "psql -d template1 -c \"VACUUM FREEZE\"" && \
+        /etc/init.d/postgresql stop
+
+# prepare database
+RUN     /etc/init.d/postgresql start && \
+        /etc/init.d/redis-server start && \
+        su - postgres -c "psql -c \"CREATE USER fabmanager WITH ENCRYPTED PASSWORD 'fabmanager';\"" && \
+        su - postgres -c "psql -c \"ALTER ROLE fabmanager WITH CREATEDB;\"" && \
+        su - postgres -c "psql -c \"CREATE DATABASE fabmanager_development OWNER fabmanager;\"" && \
+        su - postgres -c "psql -c \"CREATE DATABASE fabmanager_production OWNER fabmanager;\"" && \
+        cd /home/fabmanager/fab-manager/config && \
+        cp database.yml.default database.yml && \
+        sed -i "s/sleede/fabmanager/g" /home/fabmanager/fab-manager/config/database.yml && \
+        /etc/init.d/postgresql stop
+
+# setup database
+RUN     /etc/init.d/postgresql start && \
+        /etc/init.d/redis-server start && \
+        su -l fabmanager -s /bin/bash -c "cd /home/fabmanager/fab-manager && \
+            rake db:setup" && \
+        /etc/init.d/postgresql stop && \
+        /etc/init.d/redis-server stop
+
+# install supervisor
+RUN     apt-get -y install supervisor && \
+        sed -i "s/\(\$PORT\)/3000 -b 0.0.0.0/g" /home/fabmanager/fab-manager/Procfile
+
+# make redis run foreground
+RUN     sed -i "s/daemonize yes/daemonize no/g" /etc/redis/redis.conf
+
+ADD     fabmanager.conf /etc/supervisor/conf.d/fabmanager.conf
+
+CMD     ["/usr/bin/supervisord", "-n", "-c", "/etc/supervisor/supervisord.conf"]
+
diff --git a/contrib/docker/Makefile b/contrib/docker/Makefile
new file mode 100644
index 000000000..52f5f3586
--- /dev/null
+++ b/contrib/docker/Makefile
@@ -0,0 +1,33 @@
+DOCKER=/usr/bin/docker
+COMPOSE=/usr/local/bin/docker-compose
+COMPOSEFILE=fabmanager.yml
+REPOSITORY=fabmanager
+IMAGE=fabmanager
+TAG=latest
+IMAGENAME=$(REPOSITORY)/$(IMAGE):$(TAG)
+CONTAINERNAME=fabmanager
+
+build:
+	@$(DOCKER) build -t $(IMAGENAME) .
+
+interactive:
+	@$(DOCKER) run -ti --rm $(IMAGENAME) /bin/bash
+
+up:
+	@$(COMPOSE)  -f $(COMPOSEFILE) up -d
+
+ps:
+	@$(COMPOSE)  -f $(COMPOSEFILE) ps
+
+stop:
+	@$(COMPOSE)  -f $(COMPOSEFILE) stop
+
+start:
+	@$(COMPOSE)  -f $(COMPOSEFILE) start
+
+kill:
+	@$(COMPOSE)  -f $(COMPOSEFILE) kill
+
+rm:
+	@$(COMPOSE)  -f $(COMPOSEFILE) rm -v --force
+
diff --git a/contrib/docker/README.md b/contrib/docker/README.md
new file mode 100644
index 000000000..e0c406d18
--- /dev/null
+++ b/contrib/docker/README.md
@@ -0,0 +1,118 @@
+## Prérequis
+
+Les "outils" suivants sont un prérequis à l'utilisation de fab-manager en tant que conteneur.
+
+- docker (prérequis)
+- docker-compose (option)
+- docker-enter (option)
+- make (option)
+
+## Installation de docker
+
+Voir la documentation docker : https://docs.docker.com/installation/
+
+## Installation de docker-compose
+
+docker-compose permet de gérer l'orchestration de conteneurs docker. En soit et dans le cas de fabmanager il n'est pas "encore" utile mais apporte une souplesse par rapport à la ligne de commande. Il sera par contre utilisé quand on aura sorti redis et postgres du conteneur (travail en cours).
+
+L'installation de docker-compose peut se faire via pip. Cela est optionnel mais pratique pour gérer l'utilisation du conteneur au quotidien.  
+
+```
+pip install --upgrade docker-compose
+```
+## Installation de docker-enter
+
+docker-enter est un wrapper sur nsenter. Cet outil permet d'ouvrir un shell sur un conteneur en cours de fonctionnement. On évite ainsi d'avoir à installer un serveur ssh sur le conteneur. Il peut être remplacé par la commande exec (docker exec) depuis la version 1.3 de docker. Malgré tout je trouve docker-enter plus "stable" que docker exec.
+
+Le dépôt github de docker-exec est : https://github.com/jpetazzo/nsenter
+
+```
+git clone https://github.com/jpetazzo/nsenter
+cd nsenter
+docker exec -it CONTAINER_NAME /bin/bash
+```
+
+##  Installation de make
+
+L'installation de make est optionnelle mais est pratique pour l'utilisation du conteneur au quotidiebn
+
+# Construction de l'image docker
+
+## La procédure classique
+
+```
+cd fab-manager/contrib/docker
+docker build -t fabmanager:latest .
+```
+
+## La procédure make
+
+```
+cd fab-manager/contrib/docker
+make build
+```
+
+Cela produira une image nommée fabmanager/fabmanager:latest. Vous pouvez surcharger le nomage (repository/name:tag) de la manière suivante:
+
+```
+make build REPOSITORY=toto IMAGE=fabmanager TAG=1.1
+```
+
+Cela va produire une image nommée toto/fabmanager:1.1
+
+# Utilisation de l'image
+
+## Classique
+
+```
+docker run -d --name fabmanager fabmanager/fabmanager:latest
+```
+
+## Makefile
+
+### Premier lancement
+
+```
+make up
+```
+
+### Arrêt du conteneur
+
+```
+make stop
+```
+
+### Lancer le conteneur (après premier lancement)
+
+```
+make start
+```
+
+### Etat du conteneur
+
+```
+make ps
+```
+
+### Tuer le conteneur
+
+```
+make kill
+```
+
+### Effacer le conteneur
+
+```
+make rm
+```
+
+### Sequence de commande
+
+On peut lancer une séquence de commande en une seule ligne. Par exemple tuer le conteneur, supprimer le conteneur, construire l'image, lancer le conteneur.
+```
+make kill rm build up
+```
+
+### Notes
+
+- Lors du lancement avec make le port 3000 est mappé sur le port 3000 de l'hôte local. Cela permet de joindre fabmanager dans un navigateur à l'url "http://ipdelhotedocker:3000"
diff --git a/contrib/docker/fabmanager.conf b/contrib/docker/fabmanager.conf
new file mode 100644
index 000000000..2afe1a9fa
--- /dev/null
+++ b/contrib/docker/fabmanager.conf
@@ -0,0 +1,23 @@
+[program:redis]
+command=/usr/bin/redis-server /etc/redis/redis.conf
+autostart=true
+autorestart=true
+user=root
+stdout_logfile=/var/log/supervisor/redis.log
+stderr_logfile=/var/log/supervisor/rediserror.log
+
+[program:postgresql]
+command=/usr/lib/postgresql/9.3/bin/postgres -D /var/lib/postgresql/9.3/main -c config_file=/etc/postgresql/9.3/main/postgresql.conf
+autostart=true
+autorestart=true
+user=postgres
+stdout_logfile=/var/log/supervisor/postgres.log
+stderr_logfile=/var/log/supervisor/postgreserror.log
+
+[program:fabmanager]
+command=su -l fabmanager -c "cd /home/fabmanager/fab-manager && foreman start"
+directory=/home/fabmanager/fab-manager
+autostart=true
+autorestart=true
+stdout_logfile=/var/log/supervisor/fabmanager.log
+stderr_logfile=/var/log/supervisor/fabmanagererror.log
\ No newline at end of file
diff --git a/contrib/docker/fabmanager.yml b/contrib/docker/fabmanager.yml
new file mode 100644
index 000000000..e692bd735
--- /dev/null
+++ b/contrib/docker/fabmanager.yml
@@ -0,0 +1,6 @@
+fabmanager:
+    hostname: fabmanager
+    container_name: fabmanager
+    image: squaregolab/fabmanager:latest
+    ports:
+        - "3000:3000"

From 097d4d81dcb12148bf3fdecb6db0124950598247 Mon Sep 17 00:00:00 2001
From: Sylvain 
Date: Wed, 7 Oct 2015 16:30:38 +0200
Subject: [PATCH 3/8] fix: user without allow_contact get 403 forbidden when
 accessing api/member/self_id

---
 app/policies/user_policy.rb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/app/policies/user_policy.rb b/app/policies/user_policy.rb
index 10057d891..8e89f6e7d 100644
--- a/app/policies/user_policy.rb
+++ b/app/policies/user_policy.rb
@@ -10,7 +10,7 @@ class UserPolicy < ApplicationPolicy
   end
 
   def show?
-    user.is_admin? or (record.is_allow_contact and record.has_role?(:member))
+    user.is_admin? or (record.is_allow_contact and record.has_role?(:member)) or (user.id == record.id)
   end
 
   def create?

From b267def130fcd7ce5cfb531ea3a35bc467fb4be1 Mon Sep 17 00:00:00 2001
From: Sylvain 
Date: Wed, 28 Oct 2015 11:55:45 +0100
Subject: [PATCH 4/8] [bug] #2

fixes the lack of user's menu on small devices (can't logout, etc)
---
 app/assets/stylesheets/app.components.scss   |  6 ++
 app/assets/templates/shared/leftnav.html.erb | 58 ++++++++++++++++++--
 2 files changed, 58 insertions(+), 6 deletions(-)

diff --git a/app/assets/stylesheets/app.components.scss b/app/assets/stylesheets/app.components.scss
index 315bf9558..aa38f91bf 100644
--- a/app/assets/stylesheets/app.components.scss
+++ b/app/assets/stylesheets/app.components.scss
@@ -147,6 +147,12 @@
       top: 18px; right: 18px;
       padding: 3px 6px 1px 6px;
     }
+    .menu-badge {
+      position: absolute;
+      top: 0; right: 0;
+      padding: 2px 4px 1px 3px;
+      border: 2px solid white;
+    }
   }
   .fa { color: black; font-size: rem-calc(24); }
 }
diff --git a/app/assets/templates/shared/leftnav.html.erb b/app/assets/templates/shared/leftnav.html.erb
index e29d204f6..8cbe1d2c0 100644
--- a/app/assets/templates/shared/leftnav.html.erb
+++ b/app/assets/templates/shared/leftnav.html.erb
@@ -6,11 +6,57 @@