code.gitea.io/gitea@v1.21.7/services/markup/processorhelper.go (about)

     1  // Copyright 2022 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package markup
     5  
     6  import (
     7  	"context"
     8  
     9  	"code.gitea.io/gitea/models/user"
    10  	gitea_context "code.gitea.io/gitea/modules/context"
    11  	"code.gitea.io/gitea/modules/markup"
    12  )
    13  
    14  func ProcessorHelper() *markup.ProcessorHelper {
    15  	return &markup.ProcessorHelper{
    16  		ElementDir: "auto", // set dir="auto" for necessary (eg: <p>, <h?>, etc) tags
    17  		IsUsernameMentionable: func(ctx context.Context, username string) bool {
    18  			mentionedUser, err := user.GetUserByName(ctx, username)
    19  			if err != nil {
    20  				return false
    21  			}
    22  
    23  			giteaCtx, ok := ctx.(*gitea_context.Context)
    24  			if !ok {
    25  				// when using general context, use user's visibility to check
    26  				return mentionedUser.Visibility.IsPublic()
    27  			}
    28  
    29  			// when using gitea context (web context), use user's visibility and user's permission to check
    30  			return user.IsUserVisibleToViewer(giteaCtx, mentionedUser, giteaCtx.Doer)
    31  		},
    32  	}
    33  }