From 4265158e2ae61aaea4dfaba5eb72ddf416f488d8 Mon Sep 17 00:00:00 2001 From: Alexis Poyen <apoyen@mail.apoyen.fr> Date: Tue, 12 May 2020 14:06:22 +0200 Subject: [PATCH] Feat : Set IsAdmin field, break on several groupe OAuth --- internal/auth/inmemory.go | 10 ++++++++++ internal/auth/oauth2.go | 4 ++++ 2 files changed, 14 insertions(+) diff --git a/internal/auth/inmemory.go b/internal/auth/inmemory.go index 70aab98..6e84c59 100644 --- a/internal/auth/inmemory.go +++ b/internal/auth/inmemory.go @@ -101,6 +101,11 @@ func (d *DataHandler) AddUser(w http.ResponseWriter, req *http.Request) { http.Error(w, "passwords cannot be blank", 400) return } + if newUser.Role == "ADMIN" { + newUser.IsAdmin = true + } else { + newUser.IsAdmin = false + } if newUser.Password != "" { hash, err := bcrypt.GenerateFromPassword([]byte(newUser.Password), bcrypt.DefaultCost) if err != nil { @@ -154,6 +159,11 @@ func (d *DataHandler) UpdateUser(w http.ResponseWriter, req *http.Request) { user.Name = newUser.Name user.Surname = newUser.Surname user.Role = newUser.Role + if user.Role == "ADMIN" { + user.IsAdmin = true + } else { + user.IsAdmin = false + } if newUser.Password != "" { hash, err := bcrypt.GenerateFromPassword([]byte(newUser.Password), bcrypt.DefaultCost) if err != nil { diff --git a/internal/auth/oauth2.go b/internal/auth/oauth2.go index 73b04e7..39d404c 100644 --- a/internal/auth/oauth2.go +++ b/internal/auth/oauth2.go @@ -163,8 +163,12 @@ func (d *DataHandler) addUserInMemory(userOauth2 UserOAuth2) (User, error) { for _, userRole := range userOauth2.Groups { if userRole != "" && (userRole == os.Getenv("ADMIN_GROUP")) { user.Role = "ADMIN" + user.IsAdmin = true + break } else if userRole != "" && (userRole == os.Getenv("CLIENT_GROUP")) { user.Role = "CLIENT" + user.IsAdmin = false + break } else { return user, errors.New("user not in an app group") } -- GitLab