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 {
|
||||
// Check if automatic peer creation is enabled
|
||||
if !s.config.Core.CreateDefaultPeer {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Check if user is active, if not, quit
|
||||
var existingUser *users.User
|
||||
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
|
||||
if s.config.Core.CreateDefaultPeer {
|
||||
peers := s.peers.GetPeersByMail(email)
|
||||
if len(peers) == 0 { // Create default vpn peer
|
||||
if err := s.CreatePeer(device, wireguard.Peer{
|
||||
Identifier: existingUser.Firstname + " " + existingUser.Lastname + " (Default)",
|
||||
Email: existingUser.Email,
|
||||
CreatedBy: existingUser.Email,
|
||||
UpdatedBy: existingUser.Email,
|
||||
}); err != nil {
|
||||
if len(peers) != 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Create default vpn peer
|
||||
peer, err := s.PrepareNewPeer(device)
|
||||
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 nil
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user