Compare commits

...

21 commits

Author SHA1 Message Date
8ef25a0720
Merge pull request '1.3.0: ci: add first forgejo ci #1' (#2) from #1 into main
All checks were successful
Release Workflow / set-release-target (push) Successful in 1s
Release Workflow / build (push) Successful in 2m15s
Reviewed-on: #2
2025-09-27 21:17:41 +00:00
dfce12b156
1.3.0: ci: add release ci
All checks were successful
Release Workflow / set-release-target (push) Successful in 1s
Test Pipeline / lint (pull_request) Successful in 2m32s
Release Workflow / build (push) Successful in 4m28s
Test Pipeline / ci-test (pull_request) Successful in 4m59s
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2025-09-27 22:37:04 +02:00
1992280022
1.3.0: code: fix close issue #1
All checks were successful
Test Pipeline / lint (pull_request) Successful in 2m11s
Test Pipeline / ci-test (pull_request) Successful in 3m41s
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2025-09-26 02:59:06 +02:00
98cdbaef90
1.3.0: ci: update lint params #1
All checks were successful
Test Pipeline / lint (pull_request) Successful in 2m26s
Test Pipeline / ci-test (pull_request) Successful in 3m52s
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2025-09-26 02:47:14 +02:00
3de726658f
1.3.0: go: add return check
Some checks failed
Test Pipeline / lint (pull_request) Failing after 40s
Test Pipeline / ci-test (pull_request) Successful in 4m32s
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2025-09-26 02:37:24 +02:00
fa9f3c490f
1.3.0: docker: update golang version
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2025-09-26 02:36:44 +02:00
e16d9ed188
1.3.0: ci: update with lint params
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2025-09-26 02:36:21 +02:00
5eddb8cec5
1.3.0: ci: add golang to forgejo
Some checks failed
Test Pipeline / lint (pull_request) Failing after 2m30s
Test Pipeline / ci-test (pull_request) Successful in 5m42s
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2025-09-26 02:22:09 +02:00
7f5a418f28
1.3.0: docker: mise au propre
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2025-09-26 02:21:47 +02:00
e80bf3abc3
1.3.0: ci: rollback change image #1
Some checks failed
Test Pipeline / lint (pull_request) Failing after 2m26s
Test Pipeline / ci-test (pull_request) Failing after 2m59s
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2025-09-26 02:13:19 +02:00
ce6b78d13e
1.3.0: ci: change to alpine image
Some checks failed
Test Pipeline / ci-test (pull_request) Failing after 38s
Test Pipeline / lint (pull_request) Failing after 1m24s
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2025-09-26 02:08:36 +02:00
66471df024
1.3.0: docker: update url link #1
Some checks failed
Test Pipeline / lint (pull_request) Failing after 2m23s
Test Pipeline / ci-test (pull_request) Failing after 2m44s
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2025-09-25 23:29:46 +02:00
feb4e93f03
1.3.0: ci: add container gestion #1
Some checks failed
Test Pipeline / ci-test (pull_request) Failing after 59s
Test Pipeline / lint (pull_request) Failing after 1m41s
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2025-09-25 23:24:14 +02:00
3f0a638266
1.3.0: ci: add test for the code #1
Some checks failed
Test Pipeline / ci-test (pull_request) Failing after 20s
Test Pipeline / lint (pull_request) Failing after 1m36s
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2025-09-25 23:21:10 +02:00
205902205f
1.3.0: ci: add first forgejo ci #1
Some checks failed
/ lint (pull_request) Failing after 1m21s
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2025-09-24 22:58:46 +02:00
de845830ef Merge branch '5-issue' into 'main'
Move struct to lib

Closes #5

See merge request h6n/users!14
2024-04-08 12:01:14 +00:00
b0c6a8e0f9
v1.3.0: back: use lib for the request data
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2024-04-08 13:56:25 +02:00
31da556505
v1.3.0: lib: add login struct in lib
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2024-04-08 13:55:22 +02:00
83d99310a6 Merge branch 'release-v1.2.0' into 'main'
release-v1.2.0

See merge request h6n/users!13
2024-04-01 19:34:44 +00:00
55deef8987 Merge branch '6-issue' into 'main'
Resolve "Define in README naming policy"

Closes #6

See merge request h6n/users!12
2024-04-01 19:26:21 +00:00
68c216c48a
v1.2.0: doc: add release list and naming policy
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2024-04-01 21:25:08 +02:00
10 changed files with 211 additions and 29 deletions

View file

@ -0,0 +1,75 @@
name: Release Workflow
on:
push:
tags:
- '*'
branches:
- main
jobs:
set-release-target:
runs-on: docker
outputs:
release_cible: ${{ steps.setvar.outputs.release_cible }}
steps:
- name: Déterminer la release cible
id: setvar
run: |
if [[ "${GITHUB_REF}" == refs/tags/* ]]; then
TAG="${GITHUB_REF#refs/tags/}"
echo "release_cible=$TAG" >> $GITHUB_OUTPUT
elif [[ "${GITHUB_REF}" == "refs/heads/main" ]]; then
echo "release_cible=latest" >> $GITHUB_OUTPUT
else
echo "release_cible=unknown" >> $GITHUB_OUTPUT
fi
- name: Afficher la variable
run: echo "Release cible = ${{ steps.setvar.outputs.release_cible }}"
build:
runs-on: raw
container:
options: --privileged -v /var/run/docker.sock:/var/run/docker.sock
needs: set-release-target
steps:
- name: Check out repository
uses: actions/checkout@v3
- name: Install docker-cli
run: |
apt-get update
apt-get install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
tee /etc/apt/sources.list.d/docker.list > /dev/null
apt-get update
apt-get install -y docker-ce-cli
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login docker registry
uses: docker/login-action@v2
with:
username: ${{ forge.ACTOR }}
password: ${{ secrets.PACKAGE }}
registry: ${{ forge.SERVER_URL }}
- name: Build and push
uses: docker/build-push-action@v4
with:
context: .
push: true
tags: git.g3e.fr/h6n/users:${{ needs.set-release-target.outputs.release_cible }}
target: release

View file

@ -0,0 +1,70 @@
name: Test Pipeline
on:
pull_request:
types: [opened, synchronize]
jobs:
lint:
runs-on: raw
steps:
- name: Check out repository
uses: actions/checkout@v3
- name: Setup golang
uses: actions/setup-go@v5
with:
go-version: "1.21"
- name: golangci-lint
uses: https://github.com/golangci/golangci-lint-action@v8
with:
version: v2.1
args: --issues-exit-code 0
ci-test:
runs-on: raw
container:
options: --privileged -v /var/run/docker.sock:/var/run/docker.sock
steps:
- name: Check out repository
uses: actions/checkout@v3
- name: Install docker-cli
run: |
apt-get update
apt-get install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
tee /etc/apt/sources.list.d/docker.list > /dev/null
apt-get update
apt-get install -y docker-ce-cli
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Setup golang
uses: actions/setup-go@v5
with:
go-version: "1.24"
- name: Build image
run: |
docker build --pull -t users-release --target release .
- name: Run Test
run: |
bash -ex ./scripts/prepar_test.sh
. ./config/test.src
go test -v ./cmd/
go install gotest.tools/gotestsum@latest
gotestsum --junitfile report.xml --format testname

View file

@ -1,11 +1,12 @@
FROM golang:1.21-alpine AS develop
FROM golang:1.24-alpine AS develop
# Changement du répertoire de travail
WORKDIR /
RUN apk update && apk add --no-cache curl tar && \
curl -O https://gitlab.g3e.fr/api/v4/projects/34/packages/generic/minicurl/v1.0.0/minicurl_linux_amd64.tar.gz && \
tar xzvf minicurl_linux_amd64.tar.gz
curl -OJ https://git.g3e.fr/api/packages/H6N/generic/minicurl/1.1.0/minicurl-linux-amd64 && \
mv minicurl-linux-amd64 minicurl && \
chmod +x ./minicurl
# Changement du répertoire de travail
WORKDIR /app

View file

@ -5,6 +5,7 @@ import (
"github.com/labstack/echo/v4"
logins "gitlab.g3e.fr/h6n/users/internal"
login_lib "gitlab.g3e.fr/h6n/users/lib/login"
)
// Login
@ -16,7 +17,7 @@ import (
// @Param request body logins.RequestLogin true "request body"
// @Success 200 {object} logins.ResponseLogin
func login(c echo.Context) error {
var request logins.RequestLogin
var request login_lib.RequestLogin
if err := c.Bind(&request); err != nil {
return c.JSON(http.StatusBadRequest, err)
}

10
docs/release.md Normal file
View file

@ -0,0 +1,10 @@
# Release
## Naming policy
The naming policy is based on the [periodique table](https://fr.wikipedia.org/wiki/Tableau_p%C3%A9riodique_des_%C3%A9l%C3%A9ments#/media/Fichier:Tableau_p%C3%A9riodique_des_%C3%A9l%C3%A9ments.svg) for this project.
## Release list
- [v1.0.0 Helixire](./release/v1.0.0_damian.md)
- [v1.1.0 Fer](./release/v1.1.0_fer.md)

View file

@ -9,6 +9,7 @@ import (
"github.com/biscuit-auth/biscuit-go/v2"
"github.com/biscuit-auth/biscuit-go/v2/parser"
"gitlab.g3e.fr/h6n/users/lib"
login_lib "gitlab.g3e.fr/h6n/users/lib/login"
"golang.org/x/crypto/bcrypt"
"gorm.io/gorm"
)
@ -18,8 +19,8 @@ func CheckPasswordHash(password, hash string) bool {
return err == nil
}
func CreateLogin(db *gorm.DB, request RequestLogin) (ResponseLogin, error) {
var response ResponseLogin
func CreateLogin(db *gorm.DB, request login_lib.RequestLogin) (login_lib.ResponseLogin, error) {
var response login_lib.ResponseLogin
var user = Users{Email: request.Username}
if err := db.First(&user); err.Error != nil {

View file

@ -15,7 +15,9 @@ func DropUnusedColumns(DB *gorm.DB, values ...interface{}) {
for _, dst := range values {
stmt := &gorm.Statement{DB: DB}
stmt.Parse(dst)
if stmt.Parse(dst) != nil {
return
}
fields := stmt.Schema.Fields
columns, _ := DB.Debug().Migrator().ColumnTypes(dst)
@ -28,7 +30,9 @@ func DropUnusedColumns(DB *gorm.DB, values ...interface{}) {
}
}
if !found {
DB.Migrator().DropColumn(dst, columns[i].Name())
if DB.Migrator().DropColumn(dst, columns[i].Name()) != nil {
return
}
}
}
}
@ -39,7 +43,7 @@ func Init_database(dsn string) (*gorm.DB, error) {
if err != nil {
return db, err
}
db.AutoMigrate(&Users{})
_ = db.AutoMigrate(&Users{})
DropUnusedColumns(db, &Users{})
return db, nil

View file

@ -3,6 +3,7 @@ package lib
import (
"crypto/ed25519"
"crypto/rand"
"fmt"
"io"
"os"
"time"
@ -22,7 +23,12 @@ func InitLoginBiscuit() error {
if file, err := os.Create(filePrivateKey); err != nil {
return err
} else {
defer file.Close()
defer func() {
if cerr := file.Close(); cerr != nil {
// ici tu peux logger ou faire quelque chose
fmt.Printf("Erreur à la fermeture: %v\n", cerr)
}
}()
if _, err = io.WriteString(file, string(PrivateKey)); err != nil {
return err
@ -34,7 +40,12 @@ func InitLoginBiscuit() error {
if file, err := os.Create(filePublicKey); err != nil {
return err
} else {
defer file.Close()
defer func() {
if cerr := file.Close(); cerr != nil {
// ici tu peux logger ou faire quelque chose
fmt.Printf("Erreur à la fermeture: %v\n", cerr)
}
}()
if _, err = io.WriteString(file, string(PublicKey)); err != nil {
return err
@ -47,7 +58,12 @@ func InitLoginBiscuit() error {
if file, err := os.Open(filePrivateKey); err != nil {
return err
} else {
defer file.Close()
defer func() {
if cerr := file.Close(); cerr != nil {
// ici tu peux logger ou faire quelque chose
fmt.Printf("Erreur à la fermeture: %v\n", cerr)
}
}()
PrivateKey, err = io.ReadAll(file)
if err != nil {
@ -57,7 +73,12 @@ func InitLoginBiscuit() error {
if file, err := os.Open(filePublicKey); err != nil {
return err
} else {
defer file.Close()
defer func() {
if cerr := file.Close(); cerr != nil {
// ici tu peux logger ou faire quelque chose
fmt.Printf("Erreur à la fermeture: %v\n", cerr)
}
}()
PublicKey, err = io.ReadAll(file)
if err != nil {
@ -86,7 +107,12 @@ func InitGlobalBiscuit() error {
if file, err := os.Open(filePrivateKey); err != nil {
return err
} else {
defer file.Close()
defer func() {
if cerr := file.Close(); cerr != nil {
// ici tu peux logger ou faire quelque chose
fmt.Printf("Erreur à la fermeture: %v\n", cerr)
}
}()
PrivateKey, err = io.ReadAll(file)
if err != nil {
@ -96,7 +122,12 @@ func InitGlobalBiscuit() error {
if file, err := os.Open(filePublicKey); err != nil {
return err
} else {
defer file.Close()
defer func() {
if cerr := file.Close(); cerr != nil {
// ici tu peux logger ou faire quelque chose
fmt.Printf("Erreur à la fermeture: %v\n", cerr)
}
}()
PublicKey, err = io.ReadAll(file)
if err != nil {

View file

@ -1,4 +1,4 @@
package logins
package login_lib
type (
// RequestLogin model info

View file

@ -1,20 +1,9 @@
#!/bin/bash
cat <<ENDFILE >> /etc/apk/repositories
http://ftp.halifax.rwth-aachen.de/alpine/v3.16/main
http://ftp.halifax.rwth-aachen.de/alpine/v3.16/community
ENDFILE
apk update
apk add docker docker-cli-compose
docker version
docker compose version
docker load --input "$IMAGE_TYPE-$IMAGE_VERSION-release.tar.gz"
docker tag $CI_REGISTRY_IMAGE:$IMAGE_VERSION-release $IMAGE_TYPE:latest
cat <<ENDFILE > docker-compose.yml
version: '3.1'
cat <<ENDFILE > compose.yml
services:
postgres:
image: postgres:15.2-alpine3.17
@ -29,7 +18,7 @@ services:
timeout: 5s
retries: 5
users:
image: $IMAGE_TYPE
image: users-release
volumes:
- ./docker/keys:/keys
depends_on: