doi.go 682 B

12345678910111213141516171819202122232425262728
  1. package routes
  2. import (
  3. "github.com/G-Node/gogs/pkg/context"
  4. "github.com/G-Node/gogs/pkg/setting"
  5. "fmt"
  6. "net/http"
  7. "github.com/G-Node/gin-doi/src"
  8. log "gopkg.in/clog.v1"
  9. )
  10. func RequestDoi(c *context.Context) {
  11. if !c.Repo.IsAdmin() {
  12. c.Status(http.StatusUnauthorized)
  13. return
  14. }
  15. token := c.GetCookie(setting.SessionConfig.CookieName)
  16. token, err := ginDoi.Encrypt([]byte(setting.Doi.DoiKey), token)
  17. if err != nil {
  18. log.Error(0, "Could not encrypt Secret key:%s", err)
  19. c.Status(http.StatusInternalServerError)
  20. return
  21. }
  22. url := fmt.Sprintf("%s/?repo=%s&user=%s&token=%s", setting.Doi.DoiUrl, c.Repo.Repository.FullName(),
  23. c.User.Name, token)
  24. c.Redirect(url)
  25. }