source: spip-zone/_outils_/svn2git/trunk/create_user_gitea.sh @ 111075

Last change on this file since 111075 was 111075, checked in by cam.lafit@…, 14 months ago

S'assurer de creer tous les profils utilisateurs

  • Le prefixe de courriel ne garantie pas l'unicité des comptes
File size: 2.2 KB
Line 
1#!/bin/bash
2
3#Controle des fonctions de base
4hash jq 2>/dev/null || { echo >&2 "Fonction jq requise. Script stoppé."; exit 1; }
5
6. create_user_gitea.conf
7GITEA_ORG_LIST=()
8
9#Obtenir les identifiants pour chaque organisation
10IFS=':' read -ra ORGAS <<< "$GITEA_ORGA"
11for orga in "${ORGAS[@]}"; do
12    GITEA_ORGA_ID=$(curl \
13    --silent \
14    -X GET \
15    -H "Authorization: token $GITEA_TOKEN" \
16    $GITEA_HOST/api/v1/orgs/$orga \
17    | jq -r ".id"
18    )
19
20    GITEA_ORGA_TEAM_ID=$(curl\
21    --silent \
22    -X GET \
23    -H "Authorization: token $GITEA_TOKEN" \
24    $GITEA_HOST/api/v1/orgs/$orga/teams \
25    | jq '.[] | select(.permission == "write") | .id'
26    )
27
28    GITEA_ORG_LIST+=("$orga:$GITEA_ORGA_ID:$GITEA_ORGA_TEAM_ID")
29done
30
31while read row ; do
32    #Ignorer les lignes vides ou commentées
33    if [ -z "$row" ]; then
34        continue;
35    fi
36    if [ `expr match "$row" '\s*#'` != "0" ]; then
37        continue;
38    fi
39
40    #Un compte de type mail doit être présent
41    if [ `expr index "$row" '@'` = "0" ]; then
42        continue;
43    fi
44
45    if [[ "$row" =~ ([a-zA-Z0-9@\.]*)[[:space:]]*=[[:space:]]*(.*) ]]; then
46            email=${BASH_REMATCH[1]}
47            password=${BASH_REMATCH[2]}
48    fi
49
50    if [ -z "$email" -o -z "$password" ]; then
51        continue;
52    fi
53    echo "$row"
54
55    ## IMPORT in gitea
56    #Utiliser le prefixe de mail comme utilisateur
57    curl -H "Authorization: token $GITEA_TOKEN" \
58            -X POST \
59            --data "username=${email%@*}&email=$email&password=$password" \
60            $GITEA_HOST/api/v1/admin/users
61    #Se prémunir des collissions possible sur le prefixe de courriel ( a@domaine1 != a@domaine2 )
62    #On utilise le courriel comme nom d'utilisateur sans @
63    #On ne peut avoir 2 utilisateurs avec le meme courriel, donc pas de risque de dupliquer l'utilisateur
64    curl -H "Authorization: token $GITEA_TOKEN" \
65            -X POST \
66            --data "username=${email/@/.}&email=$email&password=$password" \
67            $GITEA_HOST/api/v1/admin/users
68
69
70    for row_orga in "${GITEA_ORG_LIST[@]}" ; do
71        orga=(${row_orga//:/ })
72
73        curl -H "Authorization: token $GITEA_TOKEN" \
74                -X PUT \
75                $GITEA_HOST/api/v1/teams/${orga[2]}/members/$username
76    done
77
78done <$SVN_USERS_FILE
Note: See TracBrowser for help on using the repository browser.