A clean, Markdown-based publishing platform made for writers. Write together, and build a community. https://writefreely.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

97 lines
2.2 KiB

  1. /*
  2. * Copyright © 2020-2021 Musing Studio LLC.
  3. *
  4. * This file is part of WriteFreely.
  5. *
  6. * WriteFreely is free software: you can redistribute it and/or modify
  7. * it under the terms of the GNU Affero General Public License, included
  8. * in the LICENSE file in this source code package.
  9. */
  10. package main
  11. import (
  12. "fmt"
  13. "github.com/urfave/cli/v2"
  14. "github.com/writefreely/writefreely"
  15. )
  16. var (
  17. cmdUser cli.Command = cli.Command{
  18. Name: "user",
  19. Usage: "user management tools",
  20. Subcommands: []*cli.Command{
  21. &cmdAddUser,
  22. &cmdDelUser,
  23. &cmdResetPass,
  24. // TODO: possibly add a user list command
  25. },
  26. }
  27. cmdAddUser cli.Command = cli.Command{
  28. Name: "create",
  29. Usage: "Add new user",
  30. Aliases: []string{"a", "add"},
  31. Flags: []cli.Flag{
  32. &cli.BoolFlag{
  33. Name: "admin",
  34. Value: false,
  35. Usage: "Create admin user",
  36. },
  37. },
  38. Action: addUserAction,
  39. }
  40. cmdDelUser cli.Command = cli.Command{
  41. Name: "delete",
  42. Usage: "Delete user",
  43. Aliases: []string{"del", "d"},
  44. Action: delUserAction,
  45. }
  46. cmdResetPass cli.Command = cli.Command{
  47. Name: "reset-pass",
  48. Usage: "Reset user's password",
  49. Aliases: []string{"resetpass", "reset"},
  50. Action: resetPassAction,
  51. }
  52. )
  53. func addUserAction(c *cli.Context) error {
  54. credentials := ""
  55. if c.NArg() > 0 {
  56. credentials = c.Args().Get(0)
  57. } else {
  58. return fmt.Errorf("No user passed. Example: writefreely user add [USER]:[PASSWORD]")
  59. }
  60. username, password, err := parseCredentials(credentials)
  61. if err != nil {
  62. return err
  63. }
  64. app := writefreely.NewApp(c.String("c"))
  65. return writefreely.CreateUser(app, username, password, c.Bool("admin"))
  66. }
  67. func delUserAction(c *cli.Context) error {
  68. username := ""
  69. if c.NArg() > 0 {
  70. username = c.Args().Get(0)
  71. } else {
  72. return fmt.Errorf("No user passed. Example: writefreely user delete [USER]")
  73. }
  74. app := writefreely.NewApp(c.String("c"))
  75. return writefreely.DoDeleteAccount(app, username)
  76. }
  77. func resetPassAction(c *cli.Context) error {
  78. username := ""
  79. if c.NArg() > 0 {
  80. username = c.Args().Get(0)
  81. } else {
  82. return fmt.Errorf("No user passed. Example: writefreely user reset-pass [USER]")
  83. }
  84. app := writefreely.NewApp(c.String("c"))
  85. return writefreely.ResetPassword(app, username)
  86. }