comparison pkg/models/user.go @ 1901:71b722809b2b

Stretch import: Added stub.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Fri, 18 Jan 2019 15:52:51 +0100
parents f1c3fe8b79f5
children 4847ac70103a
comparison
equal deleted inserted replaced
1900:6a67cd819e93 1901:71b722809b2b
23 ) 23 )
24 24
25 type ( 25 type (
26 // Email is a string formed by a valid EMail address. 26 // Email is a string formed by a valid EMail address.
27 Email string 27 Email string
28 // Country is a valid country 2 letter code.
29 Country string
30 // Role is a string with a valid gemma role. 28 // Role is a string with a valid gemma role.
31 Role string 29 Role string
32 // UserName is a string forming a valid user name. 30 // UserName is a string forming a valid user name.
33 UserName string 31 UserName string
34 32
130 } 128 }
131 return 129 return
132 } 130 }
133 131
134 var ( 132 var (
135 validCountries = []string{
136 "AT", "BG", "DE", "HU", "HR",
137 "MD", "RO", "RS", "SK", "UA",
138 }
139 errNoValidCountry = errors.New("Not a valid country")
140 )
141
142 // UnmarshalJSON ensures that the given string forms a valid
143 // two letter country code.
144 func (c *Country) UnmarshalJSON(data []byte) error {
145 var s string
146 if err := json.Unmarshal(data, &s); err != nil {
147 return err
148 }
149 s = strings.ToUpper(s)
150 for _, v := range validCountries {
151 if v == s {
152 *c = Country(v)
153 return nil
154 }
155 }
156 return errNoValidCountry
157 }
158
159 // Value implements the driver.Valuer interface.
160 func (c Country) Value() (driver.Value, error) {
161 return string(c), nil
162 }
163
164 // Scan implements the sql.Scanner interfaces.
165 func (c *Country) Scan(src interface{}) (err error) {
166 if s, ok := src.(string); ok {
167 *c = Country(s)
168 } else {
169 err = errNoString
170 }
171 return
172 }
173
174 var (
175 validRoles = []string{ 133 validRoles = []string{
176 "waterway_user", 134 "waterway_user",
177 "waterway_admin", 135 "waterway_admin",
178 "sys_admin", 136 "sys_admin",
179 } 137 }