|
7 | 7 | "context"
|
8 | 8 | "errors"
|
9 | 9 | "fmt"
|
| 10 | + "strings" |
10 | 11 |
|
11 | 12 | auth_model "code.gitea.io/gitea/models/auth"
|
12 | 13 | "code.gitea.io/gitea/models/db"
|
@@ -197,33 +198,38 @@ func runCreateUser(c *cli.Context) error {
|
197 | 198 | IsRestricted: restricted,
|
198 | 199 | }
|
199 | 200 |
|
200 |
| - if err := user_model.CreateUser(ctx, u, &user_model.Meta{}, overwriteDefault); err != nil { |
201 |
| - return fmt.Errorf("CreateUser: %w", err) |
202 |
| - } |
203 |
| - |
| 201 | + var accessTokenName string |
| 202 | + var accessTokenScope auth_model.AccessTokenScope |
204 | 203 | if c.IsSet("access-token") {
|
205 |
| - t := &auth_model.AccessToken{ |
206 |
| - Name: c.String("access-token-name"), |
207 |
| - UID: u.ID, |
| 204 | + accessTokenName = strings.TrimSpace(c.String("access-token-name")) |
| 205 | + if accessTokenName == "" { |
| 206 | + return errors.New("access-token-name cannot be empty") |
208 | 207 | }
|
209 |
| - |
210 |
| - // include access token's scopes |
211 |
| - accessTokenScope, err := auth_model.AccessTokenScope(c.String("access-token-scopes")).Normalize() |
| 208 | + var err error |
| 209 | + accessTokenScope, err = auth_model.AccessTokenScope(c.String("access-token-scopes")).Normalize() |
212 | 210 | if err != nil {
|
213 | 211 | return fmt.Errorf("invalid access token scope provided: %w", err)
|
214 | 212 | }
|
215 | 213 | if !accessTokenScope.HasPermissionScope() {
|
216 | 214 | return errors.New("access token does not have any permission")
|
217 | 215 | }
|
218 |
| - t.Scope = accessTokenScope |
| 216 | + } else if c.IsSet("access-token-name") || c.IsSet("access-token-scopes") { |
| 217 | + return errors.New("access-token-name and access-token-scopes flags are only valid when access-token flag is set") |
| 218 | + } |
| 219 | + |
| 220 | + // arguments should be prepared before creating the user & access token, in case there is anything wrong |
219 | 221 |
|
| 222 | + // create the user |
| 223 | + if err := user_model.CreateUser(ctx, u, &user_model.Meta{}, overwriteDefault); err != nil { |
| 224 | + return fmt.Errorf("CreateUser: %w", err) |
| 225 | + } |
| 226 | + // create the access token |
| 227 | + if accessTokenScope != "" { |
| 228 | + t := &auth_model.AccessToken{Name: accessTokenName, UID: u.ID, Scope: accessTokenScope} |
220 | 229 | if err := auth_model.NewAccessToken(ctx, t); err != nil {
|
221 | 230 | return err
|
222 | 231 | }
|
223 |
| - |
224 | 232 | fmt.Printf("Access token was successfully created... %s\n", t.Token)
|
225 |
| - } else if c.IsSet("access-token-name") || c.IsSet("access-token-scopes") { |
226 |
| - return errors.New("access-token-name and access-token-scopes flags are only valid when access-token flag is set") |
227 | 233 | }
|
228 | 234 |
|
229 | 235 | fmt.Printf("New user '%s' has been successfully created!\n", username)
|
|
0 commit comments