Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
N
nexpie-grafana-theme
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Registry
Registry
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Kornkitt Poolsup
nexpie-grafana-theme
Commits
5a6981e7
Commit
5a6981e7
authored
Nov 27, 2015
by
Torkel Ödegaard
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #3354 from raintank/externalPlugin
Merge changes to external-plugins branch
parents
bd8f5e9b
79d29db1
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
43 additions
and
18 deletions
+43
-18
pkg/api/externalplugin.go
+15
-16
pkg/api/index.go
+21
-0
pkg/plugins/models.go
+2
-0
pkg/plugins/plugins_test.go
+5
-2
No files found.
pkg/api/externalplugin.go
View file @
5a6981e7
...
...
@@ -9,33 +9,32 @@ import (
"github.com/Unknwon/macaron"
"github.com/grafana/grafana/pkg/log"
"github.com/grafana/grafana/pkg/middleware"
m
"github.com/grafana/grafana/pkg/models"
"github.com/grafana/grafana/pkg/plugins"
"github.com/grafana/grafana/pkg/util"
)
func
InitExternalPluginRoutes
(
r
*
macaron
.
Macaron
)
{
/*
// Handle Auth and role requirements
for
_
,
plugin
:=
range
plugins
.
ExternalPlugins
{
log
.
Info
(
"Plugin: Adding proxy routes for backend plugin"
)
for
_
,
route
:=
range
plugin
.
Routes
{
url
:=
util
.
JoinUrlFragments
(
"/api/plugin-proxy/"
,
route
.
Path
)
handlers
:=
make
([]
macaron
.
Handler
,
0
)
if
route
.
ReqSignedIn
{
c.Invoke(
middleware.Auth(&middleware.AuthOptions{ReqSignedIn: true}))
handlers
=
append
(
handlers
,
middleware
.
Auth
(
&
middleware
.
AuthOptions
{
ReqSignedIn
:
true
}))
}
if
route
.
ReqGrafanaAdmin
{
c.Invoke(middleware.Auth(&middleware.AuthOptions{ReqSignedIn: true, ReqGrafanaAdmin: true}))
}
if route.ReqRole != nil {
if *route.ReqRole == m.ROLE_EDITOR {
c.Invoke(middleware.RoleAuth(m.ROLE_EDITOR, m.ROLE_ADMIN))
handlers
=
append
(
handlers
,
middleware
.
Auth
(
&
middleware
.
AuthOptions
{
ReqSignedIn
:
true
,
ReqGrafanaAdmin
:
true
}))
}
if *route.ReqRole == m.ROLE_ADMIN {
c.Invoke(middleware.RoleAuth(m.ROLE_ADMIN))
if
route
.
ReqSignedIn
&&
route
.
ReqRole
!=
""
{
if
route
.
ReqRole
==
m
.
ROLE_ADMIN
{
handlers
=
append
(
handlers
,
middleware
.
RoleAuth
(
m
.
ROLE_ADMIN
))
}
else
if
route
.
ReqRole
==
m
.
ROLE_EDITOR
{
handlers
=
append
(
handlers
,
middleware
.
RoleAuth
(
m
.
ROLE_EDITOR
,
m
.
ROLE_ADMIN
))
}
}
*/
for
_
,
plugin
:=
range
plugins
.
ExternalPlugins
{
log
.
Info
(
"Plugin: Adding proxy routes for backend plugin"
)
for
_
,
route
:=
range
plugin
.
Routes
{
url
:=
util
.
JoinUrlFragments
(
"/api/plugin-proxy/"
,
route
.
Path
)
r
.
Route
(
url
,
route
.
Method
,
ExternalPlugin
(
route
.
Url
))
handlers
=
append
(
handlers
,
ExternalPlugin
(
route
.
Url
))
r
.
Route
(
url
,
route
.
Method
,
handlers
...
)
log
.
Info
(
"Plugin: Adding route %s"
,
url
)
}
}
...
...
pkg/api/index.go
View file @
5a6981e7
...
...
@@ -70,9 +70,30 @@ func setIndexViewData(c *middleware.Context) (*dtos.IndexViewData, error) {
data
.
PluginCss
=
append
(
data
.
PluginCss
,
css
.
Href
)
}
for
_
,
item
:=
range
plugin
.
MainNavLinks
{
// only show menu items for the specified roles.
var
validRoles
[]
m
.
RoleType
if
string
(
item
.
ReqRole
)
==
""
||
item
.
ReqRole
==
m
.
ROLE_VIEWER
{
validRoles
=
[]
m
.
RoleType
{
m
.
ROLE_ADMIN
,
m
.
ROLE_EDITOR
,
m
.
ROLE_VIEWER
}
}
else
if
item
.
ReqRole
==
m
.
ROLE_EDITOR
{
validRoles
=
[]
m
.
RoleType
{
m
.
ROLE_ADMIN
,
m
.
ROLE_EDITOR
}
}
else
if
item
.
ReqRole
==
m
.
ROLE_ADMIN
{
validRoles
=
[]
m
.
RoleType
{
m
.
ROLE_ADMIN
}
}
ok
:=
true
if
len
(
validRoles
)
>
0
{
ok
=
false
for
_
,
role
:=
range
validRoles
{
if
role
==
c
.
OrgRole
{
ok
=
true
break
}
}
}
if
ok
{
data
.
MainNavLinks
=
append
(
data
.
MainNavLinks
,
&
dtos
.
NavLink
{
Text
:
item
.
Text
,
Href
:
item
.
Href
,
Icon
:
item
.
Icon
})
}
}
}
return
&
data
,
nil
}
...
...
pkg/plugins/models.go
View file @
5a6981e7
...
...
@@ -44,6 +44,7 @@ type ExternalPluginNavLink struct {
Text
string
`json:"text"`
Icon
string
`json:"icon"`
Href
string
`json:"href"`
ReqRole
models
.
RoleType
`json:"reqRole"`
}
type
ExternalPluginCss
struct
{
...
...
@@ -51,6 +52,7 @@ type ExternalPluginCss struct {
}
type
ExternalPlugin
struct
{
Type
string
`json:"type"`
Routes
[]
*
ExternalPluginRoute
`json:"routes"`
Js
[]
*
ExternalPluginJs
`json:"js"`
Css
[]
*
ExternalPluginCss
`json:"css"`
...
...
pkg/plugins/plugins_test.go
View file @
5a6981e7
...
...
@@ -4,14 +4,17 @@ import (
"path/filepath"
"testing"
"github.com/grafana/grafana/pkg/setting"
.
"github.com/smartystreets/goconvey/convey"
"gopkg.in/ini.v1"
)
func
TestPluginScans
(
t
*
testing
.
T
)
{
Convey
(
"When scaning for plugins"
,
t
,
func
()
{
path
,
_
:=
filepath
.
Abs
(
"../../public/app/plugins"
)
err
:=
scan
(
path
)
setting
.
StaticRootPath
,
_
=
filepath
.
Abs
(
"../../public/"
)
setting
.
Cfg
=
ini
.
Empty
()
err
:=
Init
()
So
(
err
,
ShouldBeNil
)
So
(
len
(
DataSources
),
ShouldBeGreaterThan
,
1
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment