// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. package localpermissions import ( "github.com/mattermost/focalboard/server/model" "github.com/mattermost/focalboard/server/services/permissions" mmModel "github.com/mattermost/mattermost-server/v6/model" "github.com/mattermost/mattermost-server/v6/shared/mlog" ) type Service struct { store permissions.Store logger *mlog.Logger } func New(store permissions.Store, logger *mlog.Logger) *Service { return &Service{ store: store, logger: logger, } } func (s *Service) HasPermissionToTeam(userID, teamID string, permission *mmModel.Permission) bool { if userID == "" || teamID == "" || permission == nil { return false } return true } func (s *Service) HasPermissionToBoard(userID, boardID string, permission *mmModel.Permission) bool { if userID == "" || boardID == "" || permission == nil { return false } member, err := s.store.GetMemberForBoard(boardID, userID) if model.IsErrNotFound(err) { return false } if err != nil { s.logger.Error("error getting member for board", mlog.String("boardID", boardID), mlog.String("userID", userID), mlog.Err(err), ) return false } switch member.MinimumRole { case "admin": member.SchemeAdmin = true case "editor": member.SchemeEditor = true case "commenter": member.SchemeCommenter = true case "viewer": member.SchemeViewer = true } switch permission { case model.PermissionManageBoardType, model.PermissionDeleteBoard, model.PermissionManageBoardRoles, model.PermissionShareBoard: return member.SchemeAdmin case model.PermissionManageBoardCards, model.PermissionManageBoardProperties: return member.SchemeAdmin || member.SchemeEditor case model.PermissionViewBoard: return member.SchemeAdmin || member.SchemeEditor || member.SchemeCommenter || member.SchemeViewer default: return false } }