mirror of
https://github.com/h44z/wg-portal
synced 2025-02-26 05:49:14 +00:00
fix auto-creation of peers on login (#30)
This commit is contained in:
parent
a017775f8a
commit
3645d75d8d
@ -309,6 +309,11 @@ func (s *Server) DeleteUser(user users.User) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) CreateUserDefaultPeer(email, device string) error {
|
func (s *Server) CreateUserDefaultPeer(email, device string) error {
|
||||||
|
// Check if automatic peer creation is enabled
|
||||||
|
if !s.config.Core.CreateDefaultPeer {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// Check if user is active, if not, quit
|
// Check if user is active, if not, quit
|
||||||
var existingUser *users.User
|
var existingUser *users.User
|
||||||
if existingUser = s.users.GetUser(email); existingUser == nil {
|
if existingUser = s.users.GetUser(email); existingUser == nil {
|
||||||
@ -316,19 +321,27 @@ func (s *Server) CreateUserDefaultPeer(email, device string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Check if user already has a peer setup, if not, create one
|
// Check if user already has a peer setup, if not, create one
|
||||||
if s.config.Core.CreateDefaultPeer {
|
|
||||||
peers := s.peers.GetPeersByMail(email)
|
peers := s.peers.GetPeersByMail(email)
|
||||||
if len(peers) == 0 { // Create default vpn peer
|
if len(peers) != 0 {
|
||||||
if err := s.CreatePeer(device, wireguard.Peer{
|
return nil
|
||||||
Identifier: existingUser.Firstname + " " + existingUser.Lastname + " (Default)",
|
}
|
||||||
Email: existingUser.Email,
|
|
||||||
CreatedBy: existingUser.Email,
|
// Create default vpn peer
|
||||||
UpdatedBy: existingUser.Email,
|
peer, err := s.PrepareNewPeer(device)
|
||||||
}); err != nil {
|
if err != nil {
|
||||||
|
return errors.WithMessage(err, "failed to prepare new peer")
|
||||||
|
}
|
||||||
|
peer.Email = email
|
||||||
|
if existingUser.Firstname != "" && existingUser.Lastname != "" {
|
||||||
|
peer.Identifier = fmt.Sprintf("%s %s (%s)", existingUser.Firstname, existingUser.Lastname, "Default")
|
||||||
|
} else {
|
||||||
|
peer.Identifier = fmt.Sprintf("%s (%s)", existingUser.Email, "Default")
|
||||||
|
}
|
||||||
|
peer.CreatedBy = existingUser.Email
|
||||||
|
peer.UpdatedBy = existingUser.Email
|
||||||
|
if err := s.CreatePeer(device, peer); err != nil {
|
||||||
return errors.WithMessagef(err, "failed to automatically create vpn peer for %s", email)
|
return errors.WithMessagef(err, "failed to automatically create vpn peer for %s", email)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user