github.com/navikt/knorten@v0.0.0-20240419132333-1333f46ed8b6/pkg/api/usergsm.go (about)

     1  package api
     2  
     3  import (
     4  	"net/http"
     5  
     6  	"github.com/gin-contrib/sessions"
     7  	"github.com/gin-gonic/gin"
     8  	"github.com/navikt/knorten/pkg/database/gensql"
     9  )
    10  
    11  func (c *client) setupSecretRoutes() {
    12  	c.router.POST("/secret/new", func(ctx *gin.Context) {
    13  		err := c.createSecret(ctx)
    14  		if err != nil {
    15  			session := sessions.Default(ctx)
    16  			session.AddFlash(err.Error())
    17  			err := session.Save()
    18  			if err != nil {
    19  				c.log.WithError(err).Error("problem saving session")
    20  			}
    21  		}
    22  
    23  		ctx.Redirect(http.StatusSeeOther, "/oversikt")
    24  	})
    25  
    26  	c.router.POST("/secret/delete", func(ctx *gin.Context) {
    27  		err := c.deleteSecret(ctx)
    28  		if err != nil {
    29  			session := sessions.Default(ctx)
    30  			session.AddFlash(err.Error())
    31  			err := session.Save()
    32  			if err != nil {
    33  				c.log.WithError(err).Error("problem saving session")
    34  			}
    35  		}
    36  
    37  		ctx.Redirect(http.StatusSeeOther, "/oversikt")
    38  	})
    39  }
    40  
    41  func (c *client) createSecret(ctx *gin.Context) error {
    42  	user, err := getUser(ctx)
    43  	if err != nil {
    44  		return err
    45  	}
    46  
    47  	manager := gensql.UserGoogleSecretManager{
    48  		Owner: user.Email,
    49  		Name:  getNormalizedNameFromEmail(user.Email),
    50  	}
    51  
    52  	return c.repo.RegisterCreateUserGSMEvent(ctx, manager.Owner, manager)
    53  }
    54  
    55  func (c *client) deleteSecret(ctx *gin.Context) error {
    56  	user, err := getUser(ctx)
    57  	if err != nil {
    58  		return err
    59  	}
    60  
    61  	return c.repo.RegisterDeleteUserGSMEvent(ctx, user.Email)
    62  }