瀏覽代碼

Merge pull request #3536 from gravitl/master

Master
Abhishek K 2 月之前
父節點
當前提交
1a73eed655
共有 5 個文件被更改,包括 18 次插入3 次删除
  1. 1 1
      pro/auth/error.go
  2. 13 0
      pro/auth/sync.go
  3. 2 1
      pro/idp/google/google.go
  4. 1 0
      pro/idp/idp.go
  5. 1 1
      scripts/nm-quick.sh

+ 1 - 1
pro/auth/error.go

@@ -93,7 +93,7 @@ var htmlBaseTemplate = `<!DOCTYPE html>
 </html>`
 
 var oauthNotConfigured = fmt.Sprintf(htmlBaseTemplate, `<h2>Your Netmaker server does not have OAuth configured.</h2>
-<p>Please visit the docs <a href="https://docs.netmaker.io/docs/server-installation/integrating-oauth" target="_blank" rel="noopener">here</a> to learn how to.</p>`)
+<p>Please visit the docs <a href="https://docs.netmaker.io/docs/server-installation/identity-provider-integration-guide" target="_blank" rel="noopener">here</a> to learn how to.</p>`)
 
 var oauthStateInvalid = fmt.Sprintf(htmlBaseTemplate, `<h2>Invalid OAuth Session. Please re-try again.</h2>`)
 

+ 13 - 0
pro/auth/sync.go

@@ -122,6 +122,12 @@ func syncUsers(idpUsers []idp.User) error {
 	filters := logic.GetServerSettings().UserFilters
 
 	for _, user := range idpUsers {
+		if user.AccountArchived {
+			// delete the user if it has been archived.
+			_ = logic.DeleteUser(user.Username)
+			continue
+		}
+
 		var found bool
 		for _, filter := range filters {
 			if strings.HasPrefix(user.Username, filter) {
@@ -150,6 +156,13 @@ func syncUsers(idpUsers []idp.User) error {
 			if err != nil {
 				return err
 			}
+
+			// It's possible that a user can attempt to log in to Netmaker
+			// after the IDP is configured but before the users are synced.
+			// Since the user doesn't exist, a pending user will be
+			// created. Now, since the user is created, the pending user
+			// can be deleted.
+			_ = logic.DeletePendingUser(user.Username)
 		} else if dbUser.AuthType == models.OAuth {
 			if dbUser.AccountDisabled != user.AccountDisabled ||
 				dbUser.DisplayName != user.DisplayName ||

+ 2 - 1
pro/idp/google/google.go

@@ -63,7 +63,7 @@ func (g *Client) GetUsers() ([]idp.User, error) {
 	var retval []idp.User
 	err := g.service.Users.List().
 		Customer("my_customer").
-		Fields("users(id,primaryEmail,name,suspended)", "nextPageToken").
+		Fields("users(id,primaryEmail,name,suspended,archived)", "nextPageToken").
 		Pages(context.TODO(), func(users *admindir.Users) error {
 			for _, user := range users.Users {
 				retval = append(retval, idp.User{
@@ -71,6 +71,7 @@ func (g *Client) GetUsers() ([]idp.User, error) {
 					Username:        user.PrimaryEmail,
 					DisplayName:     user.Name.FullName,
 					AccountDisabled: user.Suspended,
+					AccountArchived: user.Archived,
 				})
 			}
 

+ 1 - 0
pro/idp/idp.go

@@ -10,6 +10,7 @@ type User struct {
 	Username        string
 	DisplayName     string
 	AccountDisabled bool
+	AccountArchived bool
 }
 
 type Group struct {

+ 1 - 1
scripts/nm-quick.sh

@@ -6,7 +6,7 @@ SCRIPT_DIR=$(dirname "$(realpath "$0")")
 CONFIG_PATH="$SCRIPT_DIR/$CONFIG_FILE"
 NM_QUICK_VERSION="0.1.1"
 #LATEST=$(curl -s https://api.github.com/repos/gravitl/netmaker/releases/latest | grep "tag_name" | cut -d : -f 2,3 | tr -d [:space:],\")
-LATEST=v0.99.0
+LATEST=v1.0.0
 BRANCH=master
 if [ $(id -u) -ne 0 ]; then
 	echo "This script must be run as root"