github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/state/errors/user.go (about)

     1  // Copyright 2020 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package errors
     5  
     6  import (
     7  	"fmt"
     8  
     9  	"github.com/juju/errors"
    10  )
    11  
    12  // deletedUserError is used to indicate when an attempt to mutate a deleted
    13  // user is attempted.
    14  type deletedUserError struct {
    15  	userName string
    16  }
    17  
    18  func NewDeletedUserError(userName string) error {
    19  	return &deletedUserError{userName: userName}
    20  }
    21  
    22  // Error implements the error interface.
    23  func (e deletedUserError) Error() string {
    24  	return fmt.Sprintf("user %q is permanently deleted", e.userName)
    25  }
    26  
    27  // IsDeletedUserError returns true if err is of type deletedUserError.
    28  func IsDeletedUserError(err error) bool {
    29  	_, ok := errors.Cause(err).(*deletedUserError)
    30  	return ok
    31  }
    32  
    33  // neverLoggedInError is used to indicate that a user has never logged in.
    34  type neverLoggedInError struct {
    35  	userName string
    36  }
    37  
    38  func NewNeverLoggedInError(userName string) error {
    39  	return &neverLoggedInError{userName: userName}
    40  }
    41  
    42  // Error returns the error string for a user who has never logged
    43  // in.
    44  func (e neverLoggedInError) Error() string {
    45  	return `never logged in: "` + e.userName + `"`
    46  }
    47  
    48  // IsNeverLoggedInError returns true if err is of type neverLoggedInError.
    49  func IsNeverLoggedInError(err error) bool {
    50  	_, ok := errors.Cause(err).(*neverLoggedInError)
    51  	return ok
    52  }
    53  
    54  // neverConnectedError is used to indicate that a user has never connected to
    55  // an model.
    56  type neverConnectedError struct {
    57  	userName string
    58  }
    59  
    60  func NewNeverConnectedError(userName string) error {
    61  	return &neverConnectedError{userName: userName}
    62  }
    63  
    64  // Error returns the error string for a user who has never connected to an
    65  // model.
    66  func (e neverConnectedError) Error() string {
    67  	return `never connected: "` + e.userName + `"`
    68  }
    69  
    70  // IsNeverConnectedError returns true if err is of type neverConnectedError.
    71  func IsNeverConnectedError(err error) bool {
    72  	_, ok := errors.Cause(err).(*neverConnectedError)
    73  	return ok
    74  }