|
@@ -7,6 +7,7 @@ import (
|
|
"io"
|
|
"io"
|
|
"net/http"
|
|
"net/http"
|
|
|
|
|
|
|
|
+ "github.com/gravitl/netmaker/database"
|
|
"github.com/gravitl/netmaker/logger"
|
|
"github.com/gravitl/netmaker/logger"
|
|
"github.com/gravitl/netmaker/logic"
|
|
"github.com/gravitl/netmaker/logic"
|
|
"github.com/gravitl/netmaker/models"
|
|
"github.com/gravitl/netmaker/models"
|
|
@@ -60,13 +61,29 @@ func handleAzureCallback(w http.ResponseWriter, r *http.Request) {
|
|
handleOauthNotConfigured(w)
|
|
handleOauthNotConfigured(w)
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
+ // check if user approval is already pending
|
|
|
|
+ if logic.IsPendingUser(content.UserPrincipalName) {
|
|
|
|
+ handleOauthUserNotAllowed(w)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
_, err = logic.GetUser(content.UserPrincipalName)
|
|
_, err = logic.GetUser(content.UserPrincipalName)
|
|
- if err != nil { // user must not exists, so try to make one
|
|
|
|
- if err = addUser(content.UserPrincipalName); err != nil {
|
|
|
|
|
|
+ if err != nil {
|
|
|
|
+ if database.IsEmptyRecord(err) { // user must not exist, so try to make one
|
|
|
|
+ err = logic.InsertPendingUser(&models.User{
|
|
|
|
+ UserName: content.UserPrincipalName,
|
|
|
|
+ })
|
|
|
|
+ if err != nil {
|
|
|
|
+ handleSomethingWentWrong(w)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ handleOauthUserNotAllowed(w)
|
|
|
|
+ return
|
|
|
|
+ } else {
|
|
|
|
+ handleSomethingWentWrong(w)
|
|
return
|
|
return
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- user, err := logic.GetUser(content.Email)
|
|
|
|
|
|
+ user, err := logic.GetUser(content.UserPrincipalName)
|
|
if err != nil {
|
|
if err != nil {
|
|
handleOauthUserNotFound(w)
|
|
handleOauthUserNotFound(w)
|
|
return
|
|
return
|