- // Copyright 2019 The Gitea Authors. All rights reserved.
- // Use of this source code is governed by a MIT-style
- // license that can be found in the LICENSE file.
-
- package user
-
- import (
- "errors"
- "strconv"
- "strings"
-
- "code.gitea.io/gitea/models"
- "code.gitea.io/gitea/modules/base"
- "code.gitea.io/gitea/modules/context"
- "code.gitea.io/gitea/modules/log"
- )
-
- // Avatar redirect browser to user avatar of requested size
- func Avatar(ctx *context.Context) {
- userName := ctx.Params(":username")
- size, err := strconv.Atoi(ctx.Params(":size"))
- if err != nil {
- ctx.ServerError("Invalid avatar size", err)
- return
- }
-
- log.Debug("Asked avatar for user %v and size %v", userName, size)
-
- var user *models.User
- if strings.ToLower(userName) != "ghost" {
- user, err = models.GetUserByName(userName)
- if err != nil {
- if models.IsErrUserNotExist(err) {
- ctx.ServerError("Requested avatar for invalid user", err)
- } else {
- ctx.ServerError("Retrieving user by name", err)
- }
- return
- }
- } else {
- user = models.NewGhostUser()
- }
-
- ctx.Redirect(user.RealSizedAvatarLink(size))
- }
-
- // AvatarByEmailHash redirects the browser to the appropriate Avatar link
- func AvatarByEmailHash(ctx *context.Context) {
- hash := ctx.Params(":hash")
- if len(hash) == 0 {
- ctx.ServerError("invalid avatar hash", errors.New("hash cannot be empty"))
- return
- }
- email, err := models.GetEmailForHash(hash)
- if err != nil {
- ctx.ServerError("invalid avatar hash", err)
- return
- }
- if len(email) == 0 {
- ctx.Redirect(base.DefaultAvatarLink())
- return
- }
- size := ctx.QueryInt("size")
- if size == 0 {
- size = base.DefaultAvatarSize
- }
- ctx.Redirect(base.SizedAvatarLinkWithDomain(email, size))
- }
|