Skip to content

Commit

Permalink
neofs-cli: bugfix expire-at flag for session create command.
Browse files Browse the repository at this point in the history
Added a check for changes to the lifetime flag when it's passed by the
user to prevent the settlement of the default lifetime value even if
expire-at flag passed.

Closes #2539.

Signed-off-by: Ekaterina Pavlova <[email protected]>
  • Loading branch information
AliceInHunterland committed Sep 5, 2023
1 parent 9871712 commit b393929
Showing 1 changed file with 13 additions and 4 deletions.
17 changes: 13 additions & 4 deletions cmd/neofs-cli/modules/session/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"errors"
"fmt"
"os"
"strconv"

"github.com/google/uuid"
internalclient "github.com/nspcc-dev/neofs-node/cmd/neofs-cli/internal/client"
Expand All @@ -30,8 +31,13 @@ const defaultLifetime = 10
var createCmd = &cobra.Command{
Use: "create",
Short: "Create session token",
Args: cobra.NoArgs,
Run: createSession,
Long: `Create session token.
Default lifetime of session token is ` + strconv.Itoa(defaultLifetime) + ` epochs
if one of --` + commonflags.ExpireAt + ` or --` + commonflags.Lifetime + ` flags is not specified.
`,
Args: cobra.NoArgs,
Run: createSession,
PersistentPreRun: func(cmd *cobra.Command, _ []string) {
_ = viper.BindPFlag(commonflags.WalletPath, cmd.Flags().Lookup(commonflags.WalletPath))
_ = viper.BindPFlag(commonflags.Account, cmd.Flags().Lookup(commonflags.Account))
Expand Down Expand Up @@ -68,18 +74,21 @@ func createSession(cmd *cobra.Command, _ []string) {
endpoint, _ := cmd.Flags().GetString(commonflags.RPC)
currEpoch, err := internalclient.GetCurrentEpoch(ctx, endpoint)
common.ExitOnErr(cmd, "can't get current epoch: %w", err)
cmd.Println("Current epoch:", currEpoch)

exp, _ := cmd.Flags().GetUint64(commonflags.ExpireAt)
lifetime := uint64(defaultLifetime)
if lfArg, _ := cmd.Flags().GetUint64(commonflags.Lifetime); lfArg != 0 {
exp = currEpoch + lfArg
if cmd.Flags().Changed(commonflags.Lifetime) {
lifetime, _ = cmd.Flags().GetUint64(commonflags.Lifetime)
exp = currEpoch + lifetime
}
if exp == 0 {
exp = currEpoch + lifetime
}
if exp <= currEpoch {
common.ExitOnErr(cmd, "", errors.New("expiration epoch must be greater than current epoch"))
}
cmd.Println("Expiration epoch:", exp)
var tok session.Object
err = CreateSession(ctx, &tok, c, *privKey, exp, currEpoch)
common.ExitOnErr(cmd, "can't create session: %w", err)
Expand Down

0 comments on commit b393929

Please sign in to comment.