Feature #29048 » restrict_access_macro_v2.rb
1 |
Redmine::WikiFormatting::Macros.register do |
---|---|
2 |
desc "Restricts content access to specific project role IDs. Example {{restrict_access(1,2,4) Only for DevOps team.}}" |
3 |
macro :restrict_access do |obj, args, text| |
4 |
if User.current.logged? |
5 |
membership = User.current.membership(@project) |
6 |
if ( membership != nil ) |
7 |
|
8 |
permitted_roles = args.to_a |
9 |
permitted_roles.map!{ |e| e.to_i } |
10 |
|
11 |
project_roles = membership.roles.to_a |
12 |
project_roles.map!{ |e| e.id } |
13 |
|
14 |
matching_roles = project_roles & permitted_roles |
15 |
|
16 |
if matching_roles.any? |
17 |
out = h( textilizable( text, :attachments => obj.attachments ) ) |
18 |
else
|
19 |
out = h( "Access prohibited - role is not permitted" ) |
20 |
end
|
21 |
elsif (User.current.admin?) |
22 |
out = h(textilizable(text)) |
23 |
else
|
24 |
out = h( "Access prohibited - no project member" ) |
25 |
end
|
26 |
else
|
27 |
out = h( "Access prohibited - not logged in" ) |
28 |
end
|
29 |
end
|
30 |
end
|
31 |
|
- « Previous
- 1
- 2
- Next »