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 }