mirror of https://github.com/jenkinsci/jenkins.git
Split off matrix-auth plugin.
This commit is contained in:
parent
c01f2564eb
commit
b0ac41c3b1
|
@ -61,6 +61,8 @@ Upcoming changes</a>
|
|||
<li class=bug>
|
||||
Windows JDK installer should not install a public JRE.
|
||||
(<a href="https://issues.jenkins-ci.org/browse/JENKINS-8957">issue 8957</a>)
|
||||
<li class='rfe'>
|
||||
Split matrix authorization strategies into an independent plugin.
|
||||
<li class=bug>
|
||||
SCM polling sometimes broken since 1.527 due to a change in how environment variables are calculated.
|
||||
(<a href="https://issues.jenkins-ci.org/browse/JENKINS-19307">issue 19307</a>)
|
||||
|
|
|
@ -272,7 +272,8 @@ public class ClassicPluginStrategy implements PluginStrategy {
|
|||
new DetachedPlugin("external-monitor-job","1.467.*","1.0"),
|
||||
new DetachedPlugin("ldap","1.467.*","1.0"),
|
||||
new DetachedPlugin("pam-auth","1.467.*","1.0"),
|
||||
new DetachedPlugin("mailer","1.493.*","1.2")
|
||||
new DetachedPlugin("mailer","1.493.*","1.2"),
|
||||
new DetachedPlugin("matrix-auth","1.535.*","1.0")
|
||||
);
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,285 +0,0 @@
|
|||
/*
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2004-2010, Sun Microsystems, Inc., Kohsuke Kawaguchi, Yahoo! Inc., Peter Hayes, Tom Huybrechts
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
package hudson.security;
|
||||
|
||||
import hudson.diagnosis.OldDataMonitor;
|
||||
import hudson.model.Item;
|
||||
import hudson.model.Job;
|
||||
import hudson.model.JobProperty;
|
||||
import hudson.model.JobPropertyDescriptor;
|
||||
import jenkins.model.Jenkins;
|
||||
import hudson.Extension;
|
||||
import hudson.util.FormValidation;
|
||||
import hudson.util.RobustReflectionConverter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.Collections;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import java.io.IOException;
|
||||
|
||||
import net.sf.json.JSONObject;
|
||||
|
||||
import org.acegisecurity.acls.sid.Sid;
|
||||
import org.kohsuke.stapler.StaplerRequest;
|
||||
import org.kohsuke.stapler.QueryParameter;
|
||||
import org.kohsuke.stapler.AncestorInPath;
|
||||
|
||||
import com.thoughtworks.xstream.converters.Converter;
|
||||
import com.thoughtworks.xstream.converters.MarshallingContext;
|
||||
import com.thoughtworks.xstream.converters.UnmarshallingContext;
|
||||
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
|
||||
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
|
||||
/**
|
||||
* {@link JobProperty} to associate ACL for each project.
|
||||
*
|
||||
* <p>
|
||||
* Once created (and initialized), this object becomes immutable.
|
||||
*/
|
||||
public class AuthorizationMatrixProperty extends JobProperty<Job<?, ?>> {
|
||||
|
||||
private transient SidACL acl = new AclImpl();
|
||||
|
||||
/**
|
||||
* List up all permissions that are granted.
|
||||
*
|
||||
* Strings are either the granted authority or the principal, which is not
|
||||
* distinguished.
|
||||
*/
|
||||
private final Map<Permission, Set<String>> grantedPermissions = new HashMap<Permission, Set<String>>();
|
||||
|
||||
private Set<String> sids = new HashSet<String>();
|
||||
|
||||
private AuthorizationMatrixProperty() {
|
||||
}
|
||||
|
||||
public AuthorizationMatrixProperty(Map<Permission, Set<String>> grantedPermissions) {
|
||||
// do a deep copy to be safe
|
||||
for (Entry<Permission,Set<String>> e : grantedPermissions.entrySet())
|
||||
this.grantedPermissions.put(e.getKey(),new HashSet<String>(e.getValue()));
|
||||
}
|
||||
|
||||
public Set<String> getGroups() {
|
||||
return sids;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all SIDs configured in this matrix, minus "anonymous"
|
||||
*
|
||||
* @return Always non-null.
|
||||
*/
|
||||
public List<String> getAllSIDs() {
|
||||
Set<String> r = new HashSet<String>();
|
||||
for (Set<String> set : grantedPermissions.values())
|
||||
r.addAll(set);
|
||||
r.remove("anonymous");
|
||||
|
||||
String[] data = r.toArray(new String[r.size()]);
|
||||
Arrays.sort(data);
|
||||
return Arrays.asList(data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all the (Permission,sid) pairs that are granted, in the multi-map form.
|
||||
*
|
||||
* @return
|
||||
* read-only. never null.
|
||||
*/
|
||||
public Map<Permission,Set<String>> getGrantedPermissions() {
|
||||
return Collections.unmodifiableMap(grantedPermissions);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds to {@link #grantedPermissions}. Use of this method should be limited
|
||||
* during construction, as this object itself is considered immutable once
|
||||
* populated.
|
||||
*/
|
||||
protected void add(Permission p, String sid) {
|
||||
Set<String> set = grantedPermissions.get(p);
|
||||
if (set == null)
|
||||
grantedPermissions.put(p, set = new HashSet<String>());
|
||||
set.add(sid);
|
||||
sids.add(sid);
|
||||
}
|
||||
|
||||
@Extension
|
||||
public static class DescriptorImpl extends JobPropertyDescriptor {
|
||||
@Override
|
||||
public JobProperty<?> newInstance(StaplerRequest req, JSONObject formData) throws FormException {
|
||||
formData = formData.getJSONObject("useProjectSecurity");
|
||||
if (formData.isNullObject())
|
||||
return null;
|
||||
|
||||
AuthorizationMatrixProperty amp = new AuthorizationMatrixProperty();
|
||||
for (Map.Entry<String, Object> r : (Set<Map.Entry<String, Object>>) formData.getJSONObject("data").entrySet()) {
|
||||
String sid = r.getKey();
|
||||
if (r.getValue() instanceof JSONObject) {
|
||||
for (Map.Entry<String, Boolean> e : (Set<Map.Entry<String, Boolean>>) ((JSONObject) r
|
||||
.getValue()).entrySet()) {
|
||||
if (e.getValue()) {
|
||||
Permission p = Permission.fromId(e.getKey());
|
||||
amp.add(p, sid);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return amp;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isApplicable(Class<? extends Job> jobType) {
|
||||
// only applicable when ProjectMatrixAuthorizationStrategy is in charge
|
||||
return Jenkins.getInstance().getAuthorizationStrategy() instanceof ProjectMatrixAuthorizationStrategy;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDisplayName() {
|
||||
return "Authorization Matrix";
|
||||
}
|
||||
|
||||
public List<PermissionGroup> getAllGroups() {
|
||||
List<PermissionGroup> r = new ArrayList<PermissionGroup>();
|
||||
for (PermissionGroup pg : PermissionGroup.getAll()) {
|
||||
if (pg.hasPermissionContainedBy(PermissionScope.ITEM))
|
||||
r.add(pg);
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
public boolean showPermission(Permission p) {
|
||||
return p.getEnabled() && p.isContainedBy(PermissionScope.ITEM);
|
||||
}
|
||||
|
||||
public FormValidation doCheckName(@AncestorInPath Job project, @QueryParameter String value) throws IOException, ServletException {
|
||||
return GlobalMatrixAuthorizationStrategy.DESCRIPTOR.doCheckName_(value, project, Item.CONFIGURE);
|
||||
}
|
||||
}
|
||||
|
||||
private final class AclImpl extends SidACL {
|
||||
protected Boolean hasPermission(Sid sid, Permission p) {
|
||||
if (AuthorizationMatrixProperty.this.hasPermission(toString(sid),p))
|
||||
return true;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public SidACL getACL() {
|
||||
return acl;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the given SID has the given permission.
|
||||
*/
|
||||
public boolean hasPermission(String sid, Permission p) {
|
||||
for (; p != null; p = p.impliedBy) {
|
||||
Set<String> set = grantedPermissions.get(p);
|
||||
if (set != null && set.contains(sid))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the permission is explicitly given, instead of implied through {@link Permission#impliedBy}.
|
||||
*/
|
||||
public boolean hasExplicitPermission(String sid, Permission p) {
|
||||
Set<String> set = grantedPermissions.get(p);
|
||||
return set != null && set.contains(sid);
|
||||
}
|
||||
|
||||
/**
|
||||
* Works like {@link #add(Permission, String)} but takes both parameters
|
||||
* from a single string of the form <tt>PERMISSIONID:sid</tt>
|
||||
*/
|
||||
private void add(String shortForm) {
|
||||
int idx = shortForm.indexOf(':');
|
||||
Permission p = Permission.fromId(shortForm.substring(0, idx));
|
||||
if (p==null)
|
||||
throw new IllegalArgumentException("Failed to parse '"+shortForm+"' --- no such permission");
|
||||
add(p, shortForm.substring(idx + 1));
|
||||
}
|
||||
|
||||
/**
|
||||
* Persist {@link ProjectMatrixAuthorizationStrategy} as a list of IDs that
|
||||
* represent {@link ProjectMatrixAuthorizationStrategy#grantedPermissions}.
|
||||
*/
|
||||
public static final class ConverterImpl implements Converter {
|
||||
public boolean canConvert(Class type) {
|
||||
return type == AuthorizationMatrixProperty.class;
|
||||
}
|
||||
|
||||
public void marshal(Object source, HierarchicalStreamWriter writer,
|
||||
MarshallingContext context) {
|
||||
AuthorizationMatrixProperty amp = (AuthorizationMatrixProperty) source;
|
||||
|
||||
for (Entry<Permission, Set<String>> e : amp.grantedPermissions
|
||||
.entrySet()) {
|
||||
String p = e.getKey().getId();
|
||||
for (String sid : e.getValue()) {
|
||||
writer.startNode("permission");
|
||||
writer.setValue(p + ':' + sid);
|
||||
writer.endNode();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Object unmarshal(HierarchicalStreamReader reader,
|
||||
final UnmarshallingContext context) {
|
||||
AuthorizationMatrixProperty as = new AuthorizationMatrixProperty();
|
||||
|
||||
String prop = reader.peekNextChild();
|
||||
if (prop!=null && prop.equals("useProjectSecurity")) {
|
||||
reader.moveDown();
|
||||
reader.getValue(); // we used to use this but not any more.
|
||||
reader.moveUp();
|
||||
}
|
||||
while (reader.hasMoreChildren()) {
|
||||
reader.moveDown();
|
||||
try {
|
||||
as.add(reader.getValue());
|
||||
} catch (IllegalArgumentException ex) {
|
||||
Logger.getLogger(AuthorizationMatrixProperty.class.getName())
|
||||
.log(Level.WARNING,"Skipping a non-existent permission",ex);
|
||||
RobustReflectionConverter.addErrorInContext(context, ex);
|
||||
}
|
||||
reader.moveUp();
|
||||
}
|
||||
|
||||
if (GlobalMatrixAuthorizationStrategy.migrateHudson2324(as.grantedPermissions))
|
||||
OldDataMonitor.report(context, "1.301");
|
||||
|
||||
return as;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,349 +0,0 @@
|
|||
/*
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2004-2010, Sun Microsystems, Inc., Kohsuke Kawaguchi, Yahoo! Inc.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
package hudson.security;
|
||||
|
||||
import com.thoughtworks.xstream.converters.Converter;
|
||||
import com.thoughtworks.xstream.converters.MarshallingContext;
|
||||
import com.thoughtworks.xstream.converters.UnmarshallingContext;
|
||||
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
|
||||
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
|
||||
import hudson.diagnosis.OldDataMonitor;
|
||||
import hudson.model.Descriptor;
|
||||
import jenkins.model.Jenkins;
|
||||
import hudson.model.Item;
|
||||
import hudson.util.FormValidation;
|
||||
import hudson.util.FormValidation.Kind;
|
||||
import hudson.util.VersionNumber;
|
||||
import hudson.util.RobustReflectionConverter;
|
||||
import hudson.Functions;
|
||||
import hudson.Extension;
|
||||
import net.sf.json.JSONObject;
|
||||
import org.acegisecurity.AuthenticationException;
|
||||
import org.acegisecurity.userdetails.UsernameNotFoundException;
|
||||
import org.acegisecurity.acls.sid.Sid;
|
||||
import org.kohsuke.stapler.Stapler;
|
||||
import org.kohsuke.stapler.StaplerRequest;
|
||||
import org.kohsuke.stapler.QueryParameter;
|
||||
import org.springframework.dao.DataAccessException;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import java.io.IOException;
|
||||
import java.util.Collections;
|
||||
import java.util.SortedMap;
|
||||
import java.util.TreeMap;
|
||||
|
||||
/**
|
||||
* Role-based authorization via a matrix.
|
||||
*
|
||||
* @author Kohsuke Kawaguchi
|
||||
*/
|
||||
// TODO: think about the concurrency commitment of this class
|
||||
public class GlobalMatrixAuthorizationStrategy extends AuthorizationStrategy {
|
||||
private transient SidACL acl = new AclImpl();
|
||||
|
||||
/**
|
||||
* List up all permissions that are granted.
|
||||
*
|
||||
* Strings are either the granted authority or the principal,
|
||||
* which is not distinguished.
|
||||
*/
|
||||
private final Map<Permission,Set<String>> grantedPermissions = new HashMap<Permission, Set<String>>();
|
||||
|
||||
private final Set<String> sids = new HashSet<String>();
|
||||
|
||||
/**
|
||||
* Adds to {@link #grantedPermissions}.
|
||||
* Use of this method should be limited during construction,
|
||||
* as this object itself is considered immutable once populated.
|
||||
*/
|
||||
public void add(Permission p, String sid) {
|
||||
if (p==null)
|
||||
throw new IllegalArgumentException();
|
||||
Set<String> set = grantedPermissions.get(p);
|
||||
if(set==null)
|
||||
grantedPermissions.put(p,set = new HashSet<String>());
|
||||
set.add(sid);
|
||||
sids.add(sid);
|
||||
}
|
||||
|
||||
/**
|
||||
* Works like {@link #add(Permission, String)} but takes both parameters
|
||||
* from a single string of the form <tt>PERMISSIONID:sid</tt>
|
||||
*/
|
||||
private void add(String shortForm) {
|
||||
int idx = shortForm.indexOf(':');
|
||||
Permission p = Permission.fromId(shortForm.substring(0, idx));
|
||||
if (p==null)
|
||||
throw new IllegalArgumentException("Failed to parse '"+shortForm+"' --- no such permission");
|
||||
add(p,shortForm.substring(idx+1));
|
||||
}
|
||||
|
||||
@Override
|
||||
public SidACL getRootACL() {
|
||||
return acl;
|
||||
}
|
||||
|
||||
public Set<String> getGroups() {
|
||||
return sids;
|
||||
}
|
||||
|
||||
/**
|
||||
* Due to HUDSON-2324, we want to inject Item.READ permission to everyone who has Hudson.READ,
|
||||
* to remain backward compatible.
|
||||
* @param grantedPermissions
|
||||
*/
|
||||
/*package*/ static boolean migrateHudson2324(Map<Permission,Set<String>> grantedPermissions) {
|
||||
boolean result = false;
|
||||
if(Jenkins.getInstance().isUpgradedFromBefore(new VersionNumber("1.300.*"))) {
|
||||
Set<String> f = grantedPermissions.get(Jenkins.READ);
|
||||
if (f!=null) {
|
||||
Set<String> t = grantedPermissions.get(Item.READ);
|
||||
if (t!=null)
|
||||
result = t.addAll(f);
|
||||
else {
|
||||
t = new HashSet<String>(f);
|
||||
result = true;
|
||||
}
|
||||
grantedPermissions.put(Item.READ,t);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the given SID has the given permission.
|
||||
*/
|
||||
public boolean hasPermission(String sid, Permission p) {
|
||||
for(; p!=null; p=p.impliedBy) {
|
||||
Set<String> set = grantedPermissions.get(p);
|
||||
if(set!=null && set.contains(sid) && p.getEnabled())
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the permission is explicitly given, instead of implied through {@link Permission#impliedBy}.
|
||||
*/
|
||||
public boolean hasExplicitPermission(String sid, Permission p) {
|
||||
Set<String> set = grantedPermissions.get(p);
|
||||
return set != null && set.contains(sid) && p.getEnabled();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all SIDs configured in this matrix, minus "anonymous"
|
||||
*
|
||||
* @return
|
||||
* Always non-null.
|
||||
*/
|
||||
public List<String> getAllSIDs() {
|
||||
Set<String> r = new HashSet<String>();
|
||||
for (Set<String> set : grantedPermissions.values())
|
||||
r.addAll(set);
|
||||
r.remove("anonymous");
|
||||
|
||||
String[] data = r.toArray(new String[r.size()]);
|
||||
Arrays.sort(data);
|
||||
return Arrays.asList(data);
|
||||
}
|
||||
|
||||
private final class AclImpl extends SidACL {
|
||||
protected Boolean hasPermission(Sid p, Permission permission) {
|
||||
if(GlobalMatrixAuthorizationStrategy.this.hasPermission(toString(p),permission))
|
||||
return true;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Extension
|
||||
public static final DescriptorImpl DESCRIPTOR = new DescriptorImpl();
|
||||
|
||||
/**
|
||||
* Persist {@link GlobalMatrixAuthorizationStrategy} as a list of IDs that
|
||||
* represent {@link GlobalMatrixAuthorizationStrategy#grantedPermissions}.
|
||||
*/
|
||||
public static class ConverterImpl implements Converter {
|
||||
public boolean canConvert(Class type) {
|
||||
return type==GlobalMatrixAuthorizationStrategy.class;
|
||||
}
|
||||
|
||||
public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context) {
|
||||
GlobalMatrixAuthorizationStrategy strategy = (GlobalMatrixAuthorizationStrategy)source;
|
||||
|
||||
// Output in alphabetical order for readability.
|
||||
SortedMap<Permission, Set<String>> sortedPermissions = new TreeMap<Permission, Set<String>>(Permission.ID_COMPARATOR);
|
||||
sortedPermissions.putAll(strategy.grantedPermissions);
|
||||
for (Entry<Permission, Set<String>> e : sortedPermissions.entrySet()) {
|
||||
String p = e.getKey().getId();
|
||||
List<String> sids = new ArrayList<String>(e.getValue());
|
||||
Collections.sort(sids);
|
||||
for (String sid : sids) {
|
||||
writer.startNode("permission");
|
||||
writer.setValue(p+':'+sid);
|
||||
writer.endNode();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public Object unmarshal(HierarchicalStreamReader reader, final UnmarshallingContext context) {
|
||||
GlobalMatrixAuthorizationStrategy as = create();
|
||||
|
||||
while (reader.hasMoreChildren()) {
|
||||
reader.moveDown();
|
||||
try {
|
||||
as.add(reader.getValue());
|
||||
} catch (IllegalArgumentException ex) {
|
||||
Logger.getLogger(GlobalMatrixAuthorizationStrategy.class.getName())
|
||||
.log(Level.WARNING,"Skipping a non-existent permission",ex);
|
||||
RobustReflectionConverter.addErrorInContext(context, ex);
|
||||
}
|
||||
reader.moveUp();
|
||||
}
|
||||
|
||||
if (migrateHudson2324(as.grantedPermissions))
|
||||
OldDataMonitor.report(context, "1.301");
|
||||
|
||||
return as;
|
||||
}
|
||||
|
||||
protected GlobalMatrixAuthorizationStrategy create() {
|
||||
return new GlobalMatrixAuthorizationStrategy();
|
||||
}
|
||||
}
|
||||
|
||||
public static class DescriptorImpl extends Descriptor<AuthorizationStrategy> {
|
||||
protected DescriptorImpl(Class<? extends GlobalMatrixAuthorizationStrategy> clazz) {
|
||||
super(clazz);
|
||||
}
|
||||
|
||||
public DescriptorImpl() {
|
||||
}
|
||||
|
||||
public String getDisplayName() {
|
||||
return Messages.GlobalMatrixAuthorizationStrategy_DisplayName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AuthorizationStrategy newInstance(StaplerRequest req, JSONObject formData) throws FormException {
|
||||
GlobalMatrixAuthorizationStrategy gmas = create();
|
||||
for(Map.Entry<String,JSONObject> r : (Set<Map.Entry<String,JSONObject>>)formData.getJSONObject("data").entrySet()) {
|
||||
String sid = r.getKey();
|
||||
for(Map.Entry<String,Boolean> e : (Set<Map.Entry<String,Boolean>>)r.getValue().entrySet()) {
|
||||
if(e.getValue()) {
|
||||
Permission p = Permission.fromId(e.getKey());
|
||||
gmas.add(p,sid);
|
||||
}
|
||||
}
|
||||
}
|
||||
return gmas;
|
||||
}
|
||||
|
||||
protected GlobalMatrixAuthorizationStrategy create() {
|
||||
return new GlobalMatrixAuthorizationStrategy();
|
||||
}
|
||||
|
||||
public List<PermissionGroup> getAllGroups() {
|
||||
List<PermissionGroup> groups = new ArrayList<PermissionGroup>(PermissionGroup.getAll());
|
||||
groups.remove(PermissionGroup.get(Permission.class));
|
||||
return groups;
|
||||
}
|
||||
|
||||
public boolean showPermission(Permission p) {
|
||||
return p.getEnabled();
|
||||
}
|
||||
|
||||
public FormValidation doCheckName(@QueryParameter String value ) throws IOException, ServletException {
|
||||
return doCheckName_(value, Jenkins.getInstance(), Jenkins.ADMINISTER);
|
||||
}
|
||||
|
||||
public FormValidation doCheckName_(String value, AccessControlled subject, Permission permission) throws IOException, ServletException {
|
||||
if(!subject.hasPermission(permission)) return FormValidation.ok(); // can't check
|
||||
|
||||
final String v = value.substring(1,value.length()-1);
|
||||
SecurityRealm sr = Jenkins.getInstance().getSecurityRealm();
|
||||
String ev = Functions.escape(v);
|
||||
|
||||
if(v.equals("authenticated"))
|
||||
// system reserved group
|
||||
return FormValidation.respond(Kind.OK, makeImg("user.png") +ev);
|
||||
|
||||
try {
|
||||
try {
|
||||
sr.loadUserByUsername(v);
|
||||
return FormValidation.respond(Kind.OK, makeImg("person.png")+ev);
|
||||
} catch (UserMayOrMayNotExistException e) {
|
||||
// undecidable, meaning the user may exist
|
||||
return FormValidation.respond(Kind.OK, ev);
|
||||
} catch (UsernameNotFoundException e) {
|
||||
// fall through next
|
||||
} catch (DataAccessException e) {
|
||||
// fall through next
|
||||
} catch (AuthenticationException e) {
|
||||
// other seemingly unexpected error.
|
||||
return FormValidation.error(e,"Failed to test the validity of the user name "+v);
|
||||
}
|
||||
|
||||
try {
|
||||
sr.loadGroupByGroupname(v);
|
||||
return FormValidation.respond(Kind.OK, makeImg("user.png") +ev);
|
||||
} catch (UserMayOrMayNotExistException e) {
|
||||
// undecidable, meaning the group may exist
|
||||
return FormValidation.respond(Kind.OK, ev);
|
||||
} catch (UsernameNotFoundException e) {
|
||||
// fall through next
|
||||
} catch (DataAccessException e) {
|
||||
// fall through next
|
||||
} catch (AuthenticationException e) {
|
||||
// other seemingly unexpected error.
|
||||
return FormValidation.error(e,"Failed to test the validity of the group name "+v);
|
||||
}
|
||||
|
||||
// couldn't find it. it doesn't exist
|
||||
return FormValidation.respond(Kind.ERROR, makeImg("error.png") +ev);
|
||||
} catch (Exception e) {
|
||||
// if the check fails miserably, we still want the user to be able to see the name of the user,
|
||||
// so use 'ev' as the message
|
||||
return FormValidation.error(e,ev);
|
||||
}
|
||||
}
|
||||
|
||||
private String makeImg(String gif) {
|
||||
return String.format("<img src='%s%s/images/16x16/%s' style='margin-right:0.2em'>", Stapler.getCurrentRequest().getContextPath(), Jenkins.RESOURCE_PATH, gif);
|
||||
}
|
||||
}
|
||||
|
||||
private static final Logger LOGGER = Logger.getLogger(GlobalMatrixAuthorizationStrategy.class.getName());
|
||||
}
|
||||
|
|
@ -51,7 +51,6 @@ import org.acegisecurity.providers.encoding.PasswordEncoder;
|
|||
import org.acegisecurity.providers.encoding.ShaPasswordEncoder;
|
||||
import org.acegisecurity.userdetails.UserDetails;
|
||||
import org.acegisecurity.userdetails.UsernameNotFoundException;
|
||||
import org.apache.tools.ant.taskdefs.email.Mailer;
|
||||
import org.kohsuke.stapler.DataBoundConstructor;
|
||||
import org.kohsuke.stapler.ForwardToView;
|
||||
import org.kohsuke.stapler.HttpResponse;
|
||||
|
@ -73,7 +72,6 @@ import javax.servlet.http.HttpServletResponse;
|
|||
import static javax.servlet.http.HttpServletResponse.SC_UNAUTHORIZED;
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.security.SecureRandom;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
|
@ -280,9 +278,10 @@ public class HudsonPrivateSecurityRealm extends AbstractPasswordBasedSecurityRea
|
|||
*/
|
||||
private void tryToMakeAdmin(User u) {
|
||||
AuthorizationStrategy as = Jenkins.getInstance().getAuthorizationStrategy();
|
||||
if (as instanceof GlobalMatrixAuthorizationStrategy) {
|
||||
GlobalMatrixAuthorizationStrategy ma = (GlobalMatrixAuthorizationStrategy) as;
|
||||
ma.add(Jenkins.ADMINISTER,u.getId());
|
||||
for (PermissionAdder adder : Jenkins.getInstance().getExtensionList(PermissionAdder.class)) {
|
||||
if (adder.add(as, u, Jenkins.ADMINISTER)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,72 @@
|
|||
/*
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright 2013 Jesse Glick.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
package hudson.security;
|
||||
|
||||
import hudson.Extension;
|
||||
import hudson.ExtensionPoint;
|
||||
import hudson.model.User;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import jenkins.model.Jenkins;
|
||||
import org.kohsuke.accmod.Restricted;
|
||||
import org.kohsuke.accmod.restrictions.NoExternalUse;
|
||||
|
||||
/**
|
||||
* Service which can add permissions for a given user to the configured authorization strategy.
|
||||
* Useful e.g. to make the first user created in the system be automatically granted administer privilege.
|
||||
* @since 1.535
|
||||
*/
|
||||
public abstract class PermissionAdder implements ExtensionPoint {
|
||||
|
||||
private static final Logger LOGGER = Logger.getLogger(PermissionAdder.class.getName());
|
||||
|
||||
/**
|
||||
* Called to try to give a user global permission.
|
||||
* @param strategy the configured authorization strategy
|
||||
* @param user a user
|
||||
* @param perm a permission to grant, such as {@link Jenkins#ADMINISTER}
|
||||
* @return true if the permission was added, false if this service is incapable of handling it
|
||||
*/
|
||||
public abstract boolean add(AuthorizationStrategy strategy, User user, Permission perm);
|
||||
|
||||
// TODO delete when 1.535 released and matrix-auth can depend on it
|
||||
@Restricted(NoExternalUse.class)
|
||||
@Extension public static final class Legacy extends PermissionAdder {
|
||||
|
||||
@Override public boolean add(AuthorizationStrategy strategy, User user, Permission perm) {
|
||||
try {
|
||||
strategy.getClass().getMethod("add", Permission.class, String.class).invoke(strategy, Jenkins.ADMINISTER, user.getId());
|
||||
return true;
|
||||
} catch (NoSuchMethodException x) {
|
||||
// fine, not GlobalMatrixAuthorizationStrategy or a subclass
|
||||
} catch (Exception x) {
|
||||
LOGGER.log(Level.WARNING, null, x);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -1,128 +0,0 @@
|
|||
/*
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2004-2009, Sun Microsystems, Inc., Kohsuke Kawaguchi, Yahoo! Inc., Seiji Sogabe, Tom Huybrechts
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
package hudson.security;
|
||||
|
||||
import hudson.model.AbstractItem;
|
||||
import hudson.model.Descriptor;
|
||||
import jenkins.model.Jenkins;
|
||||
import hudson.model.Item;
|
||||
import hudson.model.ItemGroup;
|
||||
import hudson.model.Job;
|
||||
import hudson.util.RobustReflectionConverter;
|
||||
import hudson.Extension;
|
||||
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
|
||||
import com.thoughtworks.xstream.converters.UnmarshallingContext;
|
||||
import com.thoughtworks.xstream.mapper.Mapper;
|
||||
import com.thoughtworks.xstream.core.JVM;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* {@link GlobalMatrixAuthorizationStrategy} plus per-project ACL.
|
||||
*
|
||||
* <p>
|
||||
* Per-project ACL is stored in {@link AuthorizationMatrixProperty}.
|
||||
*
|
||||
* @author Kohsuke Kawaguchi
|
||||
*/
|
||||
public class ProjectMatrixAuthorizationStrategy extends GlobalMatrixAuthorizationStrategy {
|
||||
@Override
|
||||
public ACL getACL(Job<?,?> project) {
|
||||
AuthorizationMatrixProperty amp = project.getProperty(AuthorizationMatrixProperty.class);
|
||||
if (amp != null) {
|
||||
return amp.getACL().newInheritingACL(getACL(project.getParent()));
|
||||
} else {
|
||||
return getACL(project.getParent());
|
||||
}
|
||||
}
|
||||
|
||||
public SidACL getACL(ItemGroup g) {
|
||||
if (g instanceof Item) {
|
||||
Item item = (Item) g;
|
||||
return (SidACL)item.getACL();
|
||||
}
|
||||
return getRootACL();
|
||||
}
|
||||
|
||||
@Override
|
||||
public SidACL getACL(AbstractItem item) {
|
||||
return getACL(item.getParent());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<String> getGroups() {
|
||||
Set<String> r = new HashSet<String>();
|
||||
r.addAll(super.getGroups());
|
||||
for (Job<?,?> j : Jenkins.getInstance().getItems(Job.class)) {
|
||||
AuthorizationMatrixProperty amp = j.getProperty(AuthorizationMatrixProperty.class);
|
||||
if (amp != null)
|
||||
r.addAll(amp.getGroups());
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
@Extension
|
||||
public static final Descriptor<AuthorizationStrategy> DESCRIPTOR = new DescriptorImpl() {
|
||||
@Override
|
||||
protected GlobalMatrixAuthorizationStrategy create() {
|
||||
return new ProjectMatrixAuthorizationStrategy();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDisplayName() {
|
||||
return Messages.ProjectMatrixAuthorizationStrategy_DisplayName();
|
||||
}
|
||||
};
|
||||
|
||||
public static class ConverterImpl extends GlobalMatrixAuthorizationStrategy.ConverterImpl {
|
||||
private RobustReflectionConverter ref;
|
||||
|
||||
public ConverterImpl(Mapper m) {
|
||||
ref = new RobustReflectionConverter(m,new JVM().bestReflectionProvider());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected GlobalMatrixAuthorizationStrategy create() {
|
||||
return new ProjectMatrixAuthorizationStrategy();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
|
||||
String name = reader.peekNextChild();
|
||||
if(name!=null && (name.equals("permission") || name.equals("useProjectSecurity")))
|
||||
// the proper serialization form
|
||||
return super.unmarshal(reader, context);
|
||||
else
|
||||
// remain compatible with earlier problem where we used reflection converter
|
||||
return ref.unmarshal(reader,context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canConvert(Class type) {
|
||||
return type==ProjectMatrixAuthorizationStrategy.class;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
<!--
|
||||
The MIT License
|
||||
|
||||
Copyright (c) 2004-2009, Sun Microsystems, Inc., Kohsuke Kawaguchi, Tom Huybrechts
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
-->
|
||||
|
||||
<?jelly escape-by-default='true'?>
|
||||
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form">
|
||||
<f:optionalBlock name="useProjectSecurity" title="${%Enable project-based security}" checked="${instance!=null}">
|
||||
<st:include page="/hudson/security/GlobalMatrixAuthorizationStrategy/config.jelly" />
|
||||
</f:optionalBlock>
|
||||
</j:jelly>
|
|
@ -1,23 +0,0 @@
|
|||
# The MIT License
|
||||
#
|
||||
# Copyright (c) 2004-2010, Sun Microsystems, Inc. Kohsuke Kawaguchi. Knud Poulsen.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
Enable\ project-based\ security=Sl\u00e5 projektbaseret adgangskontrol til
|
|
@ -1 +0,0 @@
|
|||
Enable\ project-based\ security=Projektbasierte Sicherheit aktivieren
|
|
@ -1,23 +0,0 @@
|
|||
# The MIT License
|
||||
#
|
||||
# Copyright (c) 2004-2010, Sun Microsystems, Inc.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
Enable\ project-based\ security=Habilitar seguridad en el projecto
|
|
@ -1,23 +0,0 @@
|
|||
# The MIT License
|
||||
#
|
||||
# Copyright (c) 2004-2009, Sun Microsystems, Inc., Kohsuke Kawaguchi, Eric Lefevre-Ardant
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
Enable\ project-based\ security=Activer la sécurité basée projet
|
|
@ -1,23 +0,0 @@
|
|||
# The MIT License
|
||||
#
|
||||
# Copyright (c) 2004-2010, Sun Microsystems, Inc., Kohsuke Kawaguchi, Seiji Sogabe
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
Enable\ project-based\ security=\u6A29\u9650\u8A2D\u5B9A(\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u5358\u4F4D)\u306E\u6709\u52B9\u5316
|
|
@ -1,23 +0,0 @@
|
|||
# The MIT License
|
||||
#
|
||||
# Copyright (c) 2004-2009, Sun Microsystems, Inc., Kohsuke Kawaguchi, Reginaldo L. Russinholi, Cleiber Silva
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
Enable\ project-based\ security=Habilitar seguran\u00e7a baseada em projeto
|
|
@ -1,23 +0,0 @@
|
|||
# The MIT License
|
||||
#
|
||||
# Copyright (c) 2004-2009, Sun Microsystems, Inc., Kohsuke Kawaguchi, Oguz Dag
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
Enable\ project-based\ security=Proje tabanl\u0131 g\u00fcvenlik ayarlar\u0131n\u0131 devreye al
|
|
@ -1 +0,0 @@
|
|||
Enable\ project-based\ security=\u542f\u7528\u9879\u76ee\u5b89\u5168
|
|
@ -1,23 +0,0 @@
|
|||
# The MIT License
|
||||
#
|
||||
# Copyright (c) 2013, Chunghwa Telecom Co., Ltd., Pei-Tang Huang
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
Enable\ project-based\ security=\u555f\u7528\u5c08\u6848\u578b\u5b89\u5168\u6027\u8a2d\u5b9a
|
|
@ -1,175 +0,0 @@
|
|||
<!--
|
||||
The MIT License
|
||||
|
||||
Copyright (c) 2004-2011, Sun Microsystems, Inc., Kohsuke Kawaguchi, Seiji Sogabe
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
-->
|
||||
<?jelly escape-by-default='true'?>
|
||||
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form">
|
||||
<f:block xmlns:local="local">
|
||||
<j:set var="groups" value="${descriptor.allGroups}"/>
|
||||
<d:taglib uri="local">
|
||||
<!-- generate one row for the sid name @sid -->
|
||||
<d:tag name="row">
|
||||
<td class="left-most">${title}</td>
|
||||
<j:forEach var="g" items="${groups}">
|
||||
<j:forEach var="p" items="${g.permissions}">
|
||||
<j:if test="${descriptor.showPermission(p)}">
|
||||
<td width="*">
|
||||
<f:checkbox name="[${p.id}]" checked="${instance.hasExplicitPermission(attrs.sid,p)}"/>
|
||||
</td>
|
||||
</j:if>
|
||||
</j:forEach>
|
||||
</j:forEach>
|
||||
<td class="stop" style="text-align:left;">
|
||||
<a href="#" class="toggleall">
|
||||
<img alt="${%Toggle all}" src="${imagesURL}/16x16/edit-select-all.png" height="16" width="16"/>
|
||||
</a>
|
||||
<j:if test="${attrs.sid!='anonymous'}">
|
||||
<a href="#" class="remove">
|
||||
<img alt="${%Remove user/group}" src="${imagesURL}/16x16/stop.png" height="16" width="16"/>
|
||||
</a>
|
||||
</j:if>
|
||||
</td>
|
||||
</d:tag>
|
||||
</d:taglib>
|
||||
<link rel="stylesheet" href="${rootURL}${app.VIEW_RESOURCE_PATH}/hudson/security/table.css" type="text/css" />
|
||||
<j:set var="strategyid" value="${descriptor.jsonSafeClassName}" />
|
||||
<table id="${strategyid}" class="center-align global-matrix-authorization-strategy-table" name="data">
|
||||
|
||||
<!-- The first row will show grouping -->
|
||||
<tr class="group-row">
|
||||
<td rowspan="2" class="pane-header blank">
|
||||
${%User/group}
|
||||
</td>
|
||||
<j:forEach var="g" items="${groups}">
|
||||
<j:set var="cnt" value="${0}" />
|
||||
<j:forEach var="p" items="${g.permissions}">
|
||||
<j:if test="${descriptor.showPermission(p)}">
|
||||
<j:set var="cnt" value="${cnt+1}"/>
|
||||
</j:if>
|
||||
</j:forEach>
|
||||
|
||||
<td class="pane-header" colspan="${cnt}">
|
||||
${g.title}
|
||||
</td>
|
||||
</j:forEach>
|
||||
<td rowspan="2" class="stop" />
|
||||
</tr>
|
||||
<!-- The second row for individual permission -->
|
||||
<tr class="caption-row">
|
||||
<j:forEach var="g" items="${groups}">
|
||||
<j:forEach var="p" items="${g.permissions}">
|
||||
<j:if test="${descriptor.showPermission(p)}">
|
||||
<th class="pane" tooltip="${p.description}">
|
||||
${p.name}
|
||||
</th>
|
||||
</j:if>
|
||||
</j:forEach>
|
||||
</j:forEach>
|
||||
</tr>
|
||||
|
||||
<j:forEach var="sid" items="${instance.allSIDs}">
|
||||
<tr name="[${sid}]" class="permission-row">
|
||||
<local:row title="${sid}" sid="${sid}"/>
|
||||
</tr>
|
||||
</j:forEach>
|
||||
<tr name="anonymous">
|
||||
<local:row sid="anonymous" title="${%Anonymous}" />
|
||||
</tr>
|
||||
|
||||
|
||||
<!-- template row to be used for adding a new row -->
|
||||
<j:set var="id" value="${h.generateId()}"/>
|
||||
<tr id="${id}" style="display:none" class="permission-row">
|
||||
<local:row sid="${null}" />
|
||||
</tr>
|
||||
</table>
|
||||
<table style="margin-top:0.5em; margin-left: 2em; width: 100%">
|
||||
<tr><td colspan="3">
|
||||
${%User/group to add}:
|
||||
<input type="text" id="${id}text" />
|
||||
<input type="button" value="${%Add}" id="${id}button"/>
|
||||
</td><td align="right">
|
||||
<a href="#" class="help-button" helpURL="${rootURL}${descriptor.find('hudson.security.GlobalMatrixAuthorizationStrategy$DescriptorImpl').getHelpFile('user-group')}"><img src="${imagesURL}/16x16/help.png" alt="[help]" height="16" width="16"/></a>
|
||||
</td></tr>
|
||||
<f:helpArea />
|
||||
</table>
|
||||
<script>
|
||||
(function() {
|
||||
<!-- place master outside the DOM tree so that it won't creep into the submitted form -->
|
||||
var master = document.getElementById('${id}');
|
||||
var table = master.parentNode;
|
||||
table.removeChild(master);
|
||||
|
||||
makeButton($$('${id}button'), function (e) {
|
||||
<!-- when 'add' is clicked... -->
|
||||
var name = $$('${id}text').value;
|
||||
if(name=="") {
|
||||
alert("Please enter a user name or a group name");
|
||||
return;
|
||||
}
|
||||
if(findElementsBySelector(table,"TR").find(function(n){return n.getAttribute("name")=='['+name+']';})!=null) {
|
||||
alert("Entry for '"+name+"' already exists");
|
||||
return;
|
||||
}
|
||||
|
||||
if(document.importNode!=null)
|
||||
copy = document.importNode(master,true);
|
||||
else
|
||||
copy = master.cloneNode(true); <!-- for IE -->
|
||||
copy.removeAttribute("id");
|
||||
copy.removeAttribute("style");
|
||||
copy.firstChild.innerHTML = name;
|
||||
copy.setAttribute("name",'['+name+']');
|
||||
table.appendChild(copy);
|
||||
Behaviour.applySubtree(findAncestor(table,"TABLE"),true);
|
||||
});
|
||||
})();
|
||||
|
||||
Behaviour.specify("#${strategyid} TD.stop A.remove", 'GlobalMatrixAuthorizationStrategy', 0, function(e) {
|
||||
e.onclick = function() {
|
||||
var tr = findAncestor(this,"TR");
|
||||
tr.parentNode.removeChild(tr);
|
||||
return false;
|
||||
}
|
||||
e = null; <!-- avoid memory leak -->
|
||||
});
|
||||
Behaviour.specify("#${strategyid} TD.stop A.toggleall", 'GlobalMatrixAuthorizationStrategy', 0, function(e) {
|
||||
e.onclick = function() {
|
||||
var tr = findAncestor(this,"TR");
|
||||
var inputs = tr.getElementsByTagName("INPUT");
|
||||
for(var i=0; i<inputs.length; i++){
|
||||
if(inputs[i].type == "checkbox") inputs[i].checked = !inputs[i].checked;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
e = null; <!-- avoid memory leak -->
|
||||
});
|
||||
<j:if test="${empty(descriptorPath)}">
|
||||
<j:set var="descriptorPath" value="${descriptor.descriptorFullUrl}"/>
|
||||
</j:if>
|
||||
<!-- validates the name -->
|
||||
Behaviour.specify("#${strategyid} TR.permission-row", 'GlobalMatrixAuthorizationStrategy', 0, function(e) {
|
||||
FormChecker.delayedCheck("${descriptorPath}/checkName?value="+encodeURIComponent(e.getAttribute("name")),"GET",e.firstChild);
|
||||
});
|
||||
</script>
|
||||
</f:block>
|
||||
</j:jelly>
|
|
@ -1,27 +0,0 @@
|
|||
# The MIT License
|
||||
#
|
||||
# Copyright (c) 2004-2010, Sun Microsystems, Inc. Kohsuke Kawaguchi. Knud Poulsen.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
Anonymous=Anonym
|
||||
User/group\ to\ add=Brugergruppe der skal tilf\u00f8jes
|
||||
Add=Tilf\u00f8j
|
||||
Remove\ user/group=Fjern user/gruppe
|
||||
User/group=Bruger/gruppe
|
|
@ -1,28 +0,0 @@
|
|||
# The MIT License
|
||||
#
|
||||
# Copyright (c) 2004-2009, Sun Microsystems, Inc., Kohsuke Kawaguchi, Simon Wiest
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
Remove\ user/group=Nutzer/Gruppe entfernen
|
||||
Toggle\ all=Alles ausw\u00E4hlen
|
||||
User/group=Benutzer/Gruppe
|
||||
Anonymous=Anonym
|
||||
User/group\ to\ add=Weitere Benutzer/Gruppe
|
||||
Add=Hinzufügen
|
|
@ -1,28 +0,0 @@
|
|||
# The MIT License
|
||||
#
|
||||
# Copyright (c) 2004-2010, Sun Microsystems, Inc.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
User/group=Usuario/Grupo
|
||||
Anonymous=Anónimo
|
||||
User/group\ to\ add=Usuario/Grupo para añadir
|
||||
Add=Añadir
|
||||
Remove\ user/group=Borrar usuario/grupo
|
||||
Toggle\ all=Cambiar todo
|
|
@ -1,23 +0,0 @@
|
|||
# The MIT License
|
||||
#
|
||||
# Copyright (c) 2004-2010, Sun Microsystems, Inc.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
Remove\ user/group=Poista k\u00E4ytt\u00E4j\u00E4/ryhm\u00E4
|
|
@ -1,27 +0,0 @@
|
|||
# The MIT License
|
||||
#
|
||||
# Copyright (c) 2004-2009, Sun Microsystems, Inc., Kohsuke Kawaguchi, Eric Lefevre-Ardant
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
Remove\ user/group=Supprimer utilisateur/groupe
|
||||
User/group=Utilisateur/groupe
|
||||
Anonymous=Anonyme
|
||||
User/group\ to\ add=Utilisateur/groupe à ajouter
|
||||
Add=Ajouter
|
|
@ -1,29 +0,0 @@
|
|||
# The MIT License
|
||||
#
|
||||
# Copyright (c) 2004-2012, Sun Microsystems, Inc., Kohsuke Kawaguchi, Seiji Sogabe
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
Add=\u8ffd\u52a0
|
||||
Anonymous=\u533f\u540d\u30e6\u30fc\u30b6\u30fc
|
||||
User/group=\u30e6\u30fc\u30b6\u30fc/\u30b0\u30eb\u30fc\u30d7
|
||||
User/group\ to\ add=\u8ffd\u52a0\u3059\u308b\u30e6\u30fc\u30b6\u30fc/\u30b0\u30eb\u30fc\u30d7
|
||||
|
||||
Toggle\ all=\u3059\u3079\u3066\u53cd\u8ee2
|
||||
Remove\ user/group=\u30e6\u30fc\u30b6/\u30b0\u30eb\u30fc\u30d7\u3092\u524a\u9664
|
|
@ -1,26 +0,0 @@
|
|||
# The MIT License
|
||||
#
|
||||
# Copyright (c) 2004-2010, Sun Microsystems, Inc.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
Add=Legg til
|
||||
Anonymous=Anonym
|
||||
User/group=Bruker/gruppe
|
||||
User/group\ to\ add=Bruker/gruppe \u00E5 legge til
|
|
@ -1,27 +0,0 @@
|
|||
# The MIT License
|
||||
#
|
||||
# Copyright (c) 2004-2009, Sun Microsystems, Inc., Kohsuke Kawaguchi, id:sorokh
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
Remove\ user/group=Verwijder gebruiker/groep
|
||||
User/group=Gebruiker/groep
|
||||
Anonymous=Anoniem
|
||||
User/group\ to\ add=Toe te voegen gebruiker/groep
|
||||
Add=Voeg toe
|
|
@ -1,26 +0,0 @@
|
|||
# The MIT License
|
||||
#
|
||||
# Copyright (c) 2004-2009, Sun Microsystems, Inc., Kohsuke Kawaguchi, Reginaldo L. Russinholi, Cleiber Silva
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
User/group=Usu\u00E1rios/Grupo
|
||||
Anonymous=An\u00f4nimo
|
||||
User/group\ to\ add=Usu\u00e1rio/grupo para adicionar
|
||||
Add=Adicionar
|
|
@ -1,28 +0,0 @@
|
|||
# The MIT License
|
||||
#
|
||||
# Copyright (c) 2004-2009, Sun Microsystems, Inc., Kohsuke Kawaguchi, Mike Salnikov
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
Remove\ user/group=\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F/\u0433\u0440\u0443\u043F\u043F\u0443
|
||||
Toggle\ all=\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0432\u0441\u0451
|
||||
User/group=\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c/\u0433\u0440\u0443\u043f\u043f\u0430
|
||||
Anonymous=\u0410\u043d\u043e\u043d\u0438\u043c
|
||||
User/group\ to\ add=\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f/\u0433\u0440\u0443\u043f\u043f\u0443
|
||||
Add=\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c
|
|
@ -1,28 +0,0 @@
|
|||
# The MIT License
|
||||
#
|
||||
# Copyright (c) 2004-2010, Sun Microsystems, Inc.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
Add=L\u00E4gg till
|
||||
Anonymous=Anonym
|
||||
Remove\ user/group=Ta bort anv\u00E4ndare/grupp
|
||||
Toggle\ all=V\u00E4xla alla
|
||||
User/group=Anv\u00E4ndare/grupp
|
||||
User/group\ to\ add=Anv\u00E4ndare/grupp att l\u00E4gga till
|
|
@ -1,26 +0,0 @@
|
|||
# The MIT License
|
||||
#
|
||||
# Copyright (c) 2004-2009, Sun Microsystems, Inc., Kohsuke Kawaguchi, Oguz Dag
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
User/group=Kullan\u0131c\u0131/grup
|
||||
Anonymous=Bilinmeyen
|
||||
User/group\ to\ add=Eklenecek grup
|
||||
Add=Ekle
|
|
@ -1,28 +0,0 @@
|
|||
# The MIT License
|
||||
#
|
||||
# Copyright (c) 2004-2010, Sun Microsystems, Inc.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
Remove\ user/group=\u79FB\u9664\u7528\u6237/\u7EC4
|
||||
Toggle\ all=\u5C55\u5F00\u5168\u90E8
|
||||
User/group=\u7528\u6237/\u7ec4
|
||||
Anonymous=\u533f\u540d\u7528\u6237
|
||||
User/group\ to\ add=\u6dfb\u52a0\u7528\u6237/\u7ec4
|
||||
Add=\u6dfb\u52a0
|
|
@ -1,30 +0,0 @@
|
|||
# The MIT License
|
||||
#
|
||||
# Copyright (c) 2004-2013, Sun Microsystems, Inc., Chunghwa Telecom Co., Ltd.,
|
||||
# and Pei-Tang Huang
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
Toggle\ all=\u53cd\u5411\u9078\u53d6
|
||||
Remove\ user/group=\u79fb\u9664\u4f7f\u7528\u8005\u6216\u7fa4\u7d44
|
||||
|
||||
User/group=\u4f7f\u7528\u8005\u6216\u7fa4\u7d44
|
||||
Anonymous=\u533f\u540d\u4f7f\u7528\u8005
|
||||
User/group\ to\ add=\u8981\u65b0\u589e\u7684\u4f7f\u7528\u8005\u6216\u7fa4\u7d44
|
||||
Add=\u65b0\u589e
|
|
@ -1,13 +0,0 @@
|
|||
<?jelly escape-by-default='true'?>
|
||||
<l:ajax xmlns:l="/lib/layout">
|
||||
<div>
|
||||
Different security realm has different conventions about group names.
|
||||
The best way to go about it is to login and see what group names you belong to,
|
||||
by going to <a href="${rootURL}/whoAmI" target="_new">this diagnostics page</a>.
|
||||
|
||||
<p>
|
||||
A special group "authenticated" is also available, which represents all
|
||||
authenticated (logged in) users.
|
||||
</p>
|
||||
</div>
|
||||
</l:ajax>
|
|
@ -1,11 +0,0 @@
|
|||
<?jelly escape-by-default='true'?>
|
||||
<l:ajax xmlns:l="/lib/layout">
|
||||
<div>
|
||||
ユーザー情報の取得先によってグループ名は異なる記法が使われることがあります。
|
||||
最善の方法は、一度ユーザーでログインして、この<a href="${rootURL}/whoAmI" target="_new">診断ページ</a>に行って実際にJenkinsが使っているグループ名を見ることです。
|
||||
<p>
|
||||
接頭辞である"ROLE_"と大文字であるか小文字であるかを変更するには、Jenkinsのアーカイブに含まれる<tt>WEB-INF/security/LDAPBindSecurityRealm.groovy</tt>を編集して、
|
||||
再起動します。
|
||||
</p>
|
||||
</div>
|
||||
</l:ajax>
|
|
@ -1,11 +0,0 @@
|
|||
<?jelly escape-by-default='true'?>
|
||||
<l:ajax xmlns:l="/lib/layout">
|
||||
<div>
|
||||
不同的安全性領域對群組名稱有不一樣的慣例。
|
||||
最好的方法就是登入後,到<a href="${rootURL}/whoAmI" target="_new">診斷頁</a>看您所屬的群組名稱。
|
||||
|
||||
<p>
|
||||
另外,還可以使用特別群組 "authenticated" 來代表所有驗證通過 (已登入) 的使用者。
|
||||
</p>
|
||||
</div>
|
||||
</l:ajax>
|
|
@ -1,19 +0,0 @@
|
|||
<div>
|
||||
In this scheme, you can configure who can do what by using a big table.
|
||||
|
||||
<p>
|
||||
Each column represents a permission. Hover the mouse over the permission names to get
|
||||
more information about what they represent.
|
||||
|
||||
<p>
|
||||
Each row represents a user or a group (often called 'role', depending on the security realm.)
|
||||
This includes a special user 'anonymous', which represents unauthenticated users, as well
|
||||
as 'authenticated', which represents all authenticated users (IOW, everyone except anonymous users.)
|
||||
Use the text box below the table to add new users/groups/roles to the table, and click the
|
||||
<tt>[x]</tt> icon to remove it from the table.
|
||||
|
||||
<p>
|
||||
Permissions are additive. That is, if an user X is in group A, B, and C, then
|
||||
the permissions that this user actually has are the union of all permissions given to
|
||||
X, A, B, C, and anonymous.
|
||||
</div>
|
|
@ -1,20 +0,0 @@
|
|||
<div>
|
||||
In dieser Tabelle können Sie angeben, wer zu welchen Aktionen berechtigt ist.
|
||||
<p>
|
||||
Jede Spalte entspricht einer Berechtigung. Fahren Sie mit der Maus über die
|
||||
Namen der Berechtigungen, um mehr Informationen darüber zu erhalten, was sie
|
||||
bedeuten.
|
||||
<p>
|
||||
Jede Zeile entspricht einem Benutzer oder einer Benutzergruppe (je nach
|
||||
Benutzerverzeichnis oft auch als "Rolle" bezeichnet). Die Zeilen beinhalten
|
||||
auch die besonderen Benutzer 'anonymous' bzw. 'authenticated', welche
|
||||
nichtangemeldete bzw. angemeldete Benutzer repräsentieren,
|
||||
|
||||
Verwenden Sie das untenstehende Textfeld, um neue Benutzer/Gruppen/Rollen zur Tabelle
|
||||
hinzuzufügen und klicken Sie auf das <tt>[x]</tt>-Symbol, um sie wieder von der
|
||||
Tabelle zu entfernen.
|
||||
<p>
|
||||
Berechtigungen sind additiv. Dies bedeutet, dass ein Benutzer X, der Mitglied
|
||||
in den Gruppen A, B und C ist, die Vereinigungsmenge aller Berechtigungen
|
||||
besitzt, die X, A, B, C und dem Benutzer 'anonymous' erteilt wurden.
|
||||
</div>
|
|
@ -1,26 +0,0 @@
|
|||
<div>
|
||||
<!-- OUTDATED -->
|
||||
Cette option vous permet de configurer qui fait quoi dans un grand tableau.
|
||||
|
||||
<p>
|
||||
Chaque colonne représente une autorisation. Faites glisser la souris au
|
||||
dessus du nom d'une autorisation pour obtenir plus d'information sur
|
||||
ce qu'elle représente.
|
||||
|
||||
<p>
|
||||
Chaque ligne représente un utilisateur ou un groupe (souvent appelé
|
||||
'rôle', selon les royaumes -realms- de sécurité).
|
||||
On y trouve un utilisateur spécial 'anonymous' qui représente
|
||||
les utilisateurs non authentifiés, ainsi qu'un utilisateur 'authenticated',
|
||||
qui représente les utilisateurs authentifiés (c-à-d, tout le monde, à
|
||||
l'exception des utilisateurs anonymes).
|
||||
Utilisez le texte sous la table pour ajouter des nouveaux
|
||||
utilisateurs/groupes/rôles à la table et cliquez sur l'icône
|
||||
<tt>[x]</tt> pour les supprimer.
|
||||
|
||||
<p>
|
||||
Les autorisations s'ajoutent les unes aux autres. En clair, si un
|
||||
utilisateur X est présent dans les groupes A, B et C, alors les
|
||||
autorisations associées à cet utilisateur sont l'union de toutes les
|
||||
autorisations accordées à X, A, B, C et anonymous.
|
||||
</div>
|
|
@ -1,19 +0,0 @@
|
|||
<div>
|
||||
大きな表形式で、誰が何をできるのか設定します。
|
||||
|
||||
<p>
|
||||
各列はパーミッションを表します。パーミッション名の上にマウスをあわせると、
|
||||
そのパーミッションの詳細が表示されます。
|
||||
|
||||
<p>
|
||||
各行はユーザーかグループ(セキュリティ・レルムでは、'ロール'とも呼ばれます)を表します。
|
||||
この中には、Jenkinsにログインしていない匿名ユーザーをあらわす特別な「anonymous」と、
|
||||
また、全てのログイン済みユーザーをあらわす特別な「authenticated」という名前を使うこともできます。
|
||||
表の下にあるテキストボックスを使用して、ユーザー/グループ/ロールを表に追加し、
|
||||
<tt>[x]</tt> のアイコンをクリックすると、表から削除します。
|
||||
|
||||
<p>
|
||||
パーミッションは追加式です。つまり、ユーザーXがグループA、B、Cに所属しているなら、
|
||||
このユーザーが実際に持つパーミッションは、
|
||||
ユーザーX、グループA、B、Cおよび匿名ユーザーに与えられた全てのパーミッションの和になります。
|
||||
</div>
|
|
@ -1,20 +0,0 @@
|
|||
<div>
|
||||
<!-- OUTDATED -->
|
||||
Neste esquema, você pode configurar quem pode fazer o quê usando uma grande tabela.
|
||||
|
||||
<p>
|
||||
Cada coluna representa uma permissão. Passe o mouse sobre os nomes das permissões para
|
||||
obter mais informação sobre o que elas representam.
|
||||
|
||||
<p>
|
||||
Cada linha representa um usuário ou grupo (frequentemente chamado de 'papel',
|
||||
dependendo do domínio de segurança.)
|
||||
Isto inclui um usuário especial chamado 'anonymous', que representa os usuários não autenticados.
|
||||
Use a caixa de texto abaixo da tabela para adicionar novos usuários/grupos/papéis na tabela, e clique
|
||||
no ícone <tt>[x]</tt> para remover da tabela.
|
||||
|
||||
<p>
|
||||
Permissões são cumulativas. Ou seja, se um usuário X está nos grupos A, B, e C, então
|
||||
as permissões que este usuário na verdade tem é a únião de todas as permissões dadas para
|
||||
X, A, B, C, e anônimos.
|
||||
</div>
|
|
@ -1,20 +0,0 @@
|
|||
<div>
|
||||
<!-- OUTDATED -->
|
||||
В этом режиме вы можете явно указать допустимые операции, используя матрицу привилегий.
|
||||
|
||||
<p>
|
||||
Каждая колонка представляет собой привилегию. Наведите курсор мыши на имя привелегии
|
||||
для получения большей информации о её предназначении.
|
||||
|
||||
<p>
|
||||
Каждая строка представляет собой пользователя или группу (обычно называемая "ролью", в
|
||||
зависимости от используемого модуля безопасности). Список включает также специального
|
||||
пользователя Аноним, который представляет собой неаутентифицированного пользователя.
|
||||
Чтобы добавить нового пользователя/группу/роль в таблицу, используйте поле ввода под таблицей.
|
||||
Чтобы удалить пользователя/группу/роль нажмите кнопку <tt>[x]</tt> в правой колонке.
|
||||
|
||||
<p>
|
||||
Привилегии аддитивны, то есть если пользователь X состоит в группах A, B и C, тогда
|
||||
реальные привилегии пользователя - объединение всех привилегий данных конкретно пользователю,
|
||||
группам A, B и C и анонимному пользователю.
|
||||
</div>
|
|
@ -1,19 +0,0 @@
|
|||
<div>
|
||||
<!-- OUTDATED -->
|
||||
Bu şemada, tabloyu kullanarak kimin ne yapabileceğini belirleyebilirsiniz.
|
||||
|
||||
<p>
|
||||
Her kolon bir yetkiyi temsil eder. Mouse ile yetki isimlerinin üzerine
|
||||
gelerek, daha fazla bilgi alabilirsiniz.
|
||||
|
||||
<p>
|
||||
Her satır bir kullanıcı veya grubu temsil eder (Güvenlik alanına bağlı olarak, "rol" olarak da
|
||||
adlandırılabilir). Bu satırların içerisinde yetkisiz kullanıcıları temsilen bilinmeyen (anonymous)
|
||||
kullanıcı da yer almaktadır. Aşağıdaki metin kutusunu kullanarak, tabloya kullanıcı/grup/rol ekleyebilir,
|
||||
<tt>[x]</tt> ikonuna tıklayarak bunları silebilirsiniz.
|
||||
|
||||
<p>
|
||||
Yetkilendirme, kullanıcı ve ait olduğu grupların yetkilerinin birleşim kümesi ile hesaplanır.
|
||||
Yani X kullanıcısı, A, B ve C gruplarına dahilse, yetkileri X, A, B, C ve bilinmeyen kullanıcıya
|
||||
verilen yetkilerinin birleşim kümesidir.
|
||||
</div>
|
|
@ -1,13 +0,0 @@
|
|||
<div>
|
||||
在这种授权模型中,你可以通过一个大的表格来配置什么用户可以做什么事.
|
||||
|
||||
<p>
|
||||
每一列代表一个权限.把鼠标移动到权限名称上可以查看更详细的权限说明信息.
|
||||
|
||||
<p>
|
||||
每一行代表一个用户或组(通常称为'角色',取决于安全域.),这其中包含特殊用户'anonymous',其代表未登录用户,同样还有'authenticated',其代表所有已认证的用户(也就是除了匿名用户的所有用户.)
|
||||
可以使用表格下方的输入框来添加新的用户/组/角色到表格中,并且可以点击<tt>[x]</tt>图标将其从表格中删除.
|
||||
|
||||
<p>
|
||||
权限是追加的,这说明如果一个用户X在A,B,C三个组中,那么X的权限是联合了X,A,B,C和匿名用户的所有权限.
|
||||
</div>
|
|
@ -1,15 +0,0 @@
|
|||
<div>
|
||||
在這種配置下,您可以透過一張大表格,設定每個人可以做的每件事。
|
||||
|
||||
<p>
|
||||
每一欄都表示一項權限。將滑鼠游標移到權限名稱上,可以看到權限代表的意義說明。
|
||||
|
||||
<p>
|
||||
一行就是一個使用者或群組 (依據安全性領域不同,一般也叫做「角色」)。
|
||||
包括 "anonymous" 特殊使用者,代表沒有通過驗證的人;
|
||||
另外也有 "authenticated",代表所有驗證通過的人 (換句話說,就是除了匿名使用者以外的所有人)。
|
||||
透過表格下方的文字方塊可以新增使用者、群組、角色進來,按一下 <tt>[x]</tt> 圖示可以把它由表格中移掉。
|
||||
|
||||
<p>
|
||||
權限會累加。也就是說,如果 X 使用者在 A, B, C 三個群組中,則該使用者實際的權限會是 X, A, B, C 及匿名使用者權限的聯集。
|
||||
</div>
|
|
@ -22,8 +22,6 @@
|
|||
GlobalSecurityConfiguration.DisplayName=Configure Global Security
|
||||
GlobalSecurityConfiguration.Description=Secure Jenkins; define who is allowed to access/use the system.
|
||||
|
||||
GlobalMatrixAuthorizationStrategy.DisplayName=Matrix-based security
|
||||
|
||||
HudsonPrivateSecurityRealm.WouldYouLikeToSignUp=This {0} {1} is new to Jenkins. Would you like to sign up?
|
||||
LegacyAuthorizationStrategy.DisplayName=Legacy mode
|
||||
|
||||
|
@ -56,8 +54,6 @@ LegacySecurityRealm.Displayname=Delegate to servlet container
|
|||
|
||||
UserDetailsServiceProxy.UnableToQuery=Unable to query user information: {0}
|
||||
|
||||
ProjectMatrixAuthorizationStrategy.DisplayName=Project-based Matrix Authorization Strategy
|
||||
|
||||
PAMSecurityRealm.DisplayName=Unix user/group database
|
||||
PAMSecurityRealm.ReadPermission=Jenkins needs to be able to read /etc/shadow
|
||||
PAMSecurityRealm.BelongToGroup={0} needs to belong to group {1} to read /etc/shadow
|
||||
|
|
|
@ -36,9 +36,7 @@ HudsonPrivateSecurityRealm.ManageUserLinks.DisplayName=Brugeradministration
|
|||
HudsonPrivateSecurityRealm.DisplayName=Jenkins''s egen brugerdatabase
|
||||
PAMSecurityRealm.DisplayName=Unix bruger/gruppe database
|
||||
AuthorizationStrategy.DisplayName=Alle kan g\u00f8re alt
|
||||
ProjectMatrixAuthorizationStrategy.DisplayName=Projektbaseret matriceauthentificering
|
||||
AccessDeniedException2.MissingPermission={0} mangler {1} rettigheden
|
||||
GlobalMatrixAuthorizationStrategy.DisplayName=Matricebaseret sikkerhed
|
||||
Permission.Permissions.Title=N/A
|
||||
LDAPSecurityRealm.UnableToConnect=Kan ikke oprette forbindelse til {0} : {1}
|
||||
FullControlOnceLoggedInAuthorizationStrategy.DisplayName=Indloggede brugere kan g\u00f8re alt
|
||||
|
|
|
@ -22,53 +22,48 @@
|
|||
GlobalSecurityConfiguration.DisplayName=Globale Sicherheit konfigurieren
|
||||
GlobalSecurityConfiguration.Description=Jenkins absichern und festlegen, wer Zugriff auf das System hat und es benutzen darf.
|
||||
|
||||
GlobalMatrixAuthorizationStrategy.DisplayName=Matrix-basierte Sicherheit
|
||||
|
||||
LegacyAuthorizationStrategy.DisplayName=Legacy-Autorisierung
|
||||
|
||||
HudsonPrivateSecurityRealm.DisplayName=Jenkins' eingebautes Benutzerverzeichnis
|
||||
HudsonPrivateSecurityRealm.Details.DisplayName=Passwort
|
||||
HudsonPrivateSecurityRealm.Details.PasswordError=\
|
||||
Das angegebene Passwort und seine Wiederholung stimmen nicht überein. \
|
||||
Bitte überprüfen Sie Ihre Eingabe.
|
||||
Das angegebene Passwort und seine Wiederholung stimmen nicht \u00fcberein. \
|
||||
Bitte \u00fcberpr\u00fcfen Sie Ihre Eingabe.
|
||||
HudsonPrivateSecurityRealm.ManageUserLinks.DisplayName=Benutzer verwalten
|
||||
HudsonPrivateSecurityRealm.ManageUserLinks.Description=Anlegen, Aktualisieren und Löschen von Benutzern, die sich an dieser Jenkins-Installation anmelden dürfen.
|
||||
HudsonPrivateSecurityRealm.ManageUserLinks.Description=Anlegen, Aktualisieren und L\u00f6schen von Benutzern, die sich an dieser Jenkins-Installation anmelden d\u00fcrfen.
|
||||
|
||||
HudsonPrivateSecurityRealm.CreateAccount.TextNotMatchWordInImage=Text stimmt nicht mit dem Wort im Bild überein
|
||||
HudsonPrivateSecurityRealm.CreateAccount.PasswordNotMatch=Das angegebene Passwort und seine Wiederholung stimmen nicht überein
|
||||
HudsonPrivateSecurityRealm.CreateAccount.PasswordRequired=Passwort wird benötigt
|
||||
HudsonPrivateSecurityRealm.CreateAccount.UserNameRequired=Benutzername wird benötigt
|
||||
HudsonPrivateSecurityRealm.CreateAccount.InvalidEmailAddress=Ungültige E-Mail Adresse
|
||||
HudsonPrivateSecurityRealm.CreateAccount.TextNotMatchWordInImage=Text stimmt nicht mit dem Wort im Bild \u00fcberein
|
||||
HudsonPrivateSecurityRealm.CreateAccount.PasswordNotMatch=Das angegebene Passwort und seine Wiederholung stimmen nicht \u00fcberein
|
||||
HudsonPrivateSecurityRealm.CreateAccount.PasswordRequired=Passwort wird ben\u00f6tigt
|
||||
HudsonPrivateSecurityRealm.CreateAccount.UserNameRequired=Benutzername wird ben\u00f6tigt
|
||||
HudsonPrivateSecurityRealm.CreateAccount.InvalidEmailAddress=Ung\u00fcltige E-Mail Adresse
|
||||
HudsonPrivateSecurityRealm.CreateAccount.UserNameAlreadyTaken=Benutzername ist bereits vergeben
|
||||
|
||||
FullControlOnceLoggedInAuthorizationStrategy.DisplayName=Angemeldete Benutzer dürfen alle Aktionen ausführen
|
||||
FullControlOnceLoggedInAuthorizationStrategy.DisplayName=Angemeldete Benutzer d\u00fcrfen alle Aktionen ausf\u00fchren
|
||||
|
||||
AuthorizationStrategy.DisplayName=Jeder darf alle Aktionen ausführen
|
||||
AuthorizationStrategy.DisplayName=Jeder darf alle Aktionen ausf\u00fchren
|
||||
|
||||
LDAPSecurityRealm.DisplayName=LDAP
|
||||
LDAPSecurityRealm.SyntaxOfServerField=\
|
||||
Syntax der Server-Angabe ist SERVER, SERVER:PORT oder ldaps://SERVER[:PORT]
|
||||
LDAPSecurityRealm.UnknownHost=Unbekannter Host: {0}
|
||||
LDAPSecurityRealm.UnableToConnect=Keine Verbindung zu {0} : {1}
|
||||
LDAPSecurityRealm.InvalidPortNumber=Ungültige Port-Nummer
|
||||
LDAPSecurityRealm.InvalidPortNumber=Ung\u00fcltige Port-Nummer
|
||||
LegacySecurityRealm.Displayname=An Servlet-Container delegieren
|
||||
|
||||
UserDetailsServiceProxy.UnableToQuery=Benutzerinformationen konnten nicht abgefragt werden: {0}
|
||||
|
||||
PAMSecurityRealm.DisplayName=Unix Benutzer-/Gruppenverzeichnis
|
||||
PAMSecurityRealm.ReadPermission=Jenkins benötigt Leserechte für /etc/shadow
|
||||
PAMSecurityRealm.BelongToGroup={0} muß zu Gruppe {1} gehören, um /etc/shadow lesen zu können.
|
||||
PAMSecurityRealm.ReadPermission=Jenkins ben\u00f6tigt Leserechte f\u00fcr /etc/shadow
|
||||
PAMSecurityRealm.BelongToGroup={0} mu\u00df zu Gruppe {1} geh\u00f6ren, um /etc/shadow lesen zu k\u00f6nnen.
|
||||
PAMSecurityRealm.RunAsUserOrBelongToGroupAndChmod=\
|
||||
Entweder muß Jenkins als {0} ausgeführt werden, oder {1} muß zu Gruppe {2} gehören und \
|
||||
''chmod g+r /etc/shadow'' muß ausgeführt werden, damit Jenkins /etc/shadow lesen kann.
|
||||
Entweder mu\u00df Jenkins als {0} ausgef\u00fchrt werden, oder {1} mu\u00df zu Gruppe {2} geh\u00f6ren und \
|
||||
''chmod g+r /etc/shadow'' mu\u00df ausgef\u00fchrt werden, damit Jenkins /etc/shadow lesen kann.
|
||||
PAMSecurityRealm.Success=Erfolgreich
|
||||
PAMSecurityRealm.User=Benutzer ''{0}''
|
||||
PAMSecurityRealm.CurrentUser=Aktueller Benutzer
|
||||
PAMSecurityRealm.Uid=uid: {0}
|
||||
|
||||
|
||||
ProjectMatrixAuthorizationStrategy.DisplayName=Projektbasierte Matrix-Zugriffssteuerung
|
||||
|
||||
# not in use
|
||||
Permission.Permissions.Title=N/A
|
||||
AccessDeniedException2.MissingPermission={0} fehlt das Recht ''{1}''
|
||||
|
|
|
@ -20,37 +20,34 @@
|
|||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
GlobalSecurityConfiguration.DisplayName=Configuraci\u00F3n global de la seguridad
|
||||
GlobalSecurityConfiguration.DisplayName=Configuraci\u00f3n global de la seguridad
|
||||
GlobalSecurityConfiguration.Description=Seguridad en Jenkins. \
|
||||
Define qui\u00E9n tiene acceso al sistema (autenticaci\u00F3n) y qu\u00E9 puede hacer (autorizaci\u00F3n)
|
||||
GlobalMatrixAuthorizationStrategy.DisplayName=Configuración de seguridad
|
||||
Define qui\u00e9n tiene acceso al sistema (autenticaci\u00f3n) y qu\u00e9 puede hacer (autorizaci\u00f3n)
|
||||
|
||||
LegacyAuthorizationStrategy.DisplayName=Modo ''legacy''
|
||||
|
||||
HudsonPrivateSecurityRealm.DisplayName=Usar base de datos de Jenkins
|
||||
HudsonPrivateSecurityRealm.Details.DisplayName=Contraseña
|
||||
HudsonPrivateSecurityRealm.Details.DisplayName=Contrase\u00f1a
|
||||
HudsonPrivateSecurityRealm.Details.PasswordError=\
|
||||
Las contraseñas no coinciden.
|
||||
HudsonPrivateSecurityRealm.ManageUserLinks.DisplayName=Gestión de usuarios
|
||||
Las contrase\u00f1as no coinciden.
|
||||
HudsonPrivateSecurityRealm.ManageUserLinks.DisplayName=Gesti\u00f3n de usuarios
|
||||
HudsonPrivateSecurityRealm.ManageUserLinks.Description=Crear/borrar/editar usuarios que puedan utilizar Jenkins
|
||||
|
||||
FullControlOnceLoggedInAuthorizationStrategy.DisplayName=Usuarios autenticados tienen privilegios para todo
|
||||
|
||||
AuthorizationStrategy.DisplayName=Cualquiera puede hacer cualquier acción
|
||||
AuthorizationStrategy.DisplayName=Cualquiera puede hacer cualquier acci\u00f3n
|
||||
|
||||
LegacySecurityRealm.Displayname=Delegar seguridad al contenedor de servlets
|
||||
|
||||
UserDetailsServiceProxy.UnableToQuery=Imposible obtener la información del usuario: {0}
|
||||
|
||||
ProjectMatrixAuthorizationStrategy.DisplayName=Estrategia de seguridad para el proyecto
|
||||
UserDetailsServiceProxy.UnableToQuery=Imposible obtener la informaci\u00f3n del usuario: {0}
|
||||
|
||||
# not in use
|
||||
Permission.Permissions.Title=N/D
|
||||
AccessDeniedException2.MissingPermission={0} no tiene el permiso {1}
|
||||
|
||||
|
||||
PAMSecurityRealm.DisplayName=Autenticación basada en usuarios y grupos Unix
|
||||
PAMSecurityRealm.ReadPermission=Jenkins necesita permisos de lectura del fichero /etc/shadowPAMSecurityRealm.DisplayName=Usar autenticación Unix: usuario/grupo
|
||||
PAMSecurityRealm.DisplayName=Autenticaci\u00f3n basada en usuarios y grupos Unix
|
||||
PAMSecurityRealm.ReadPermission=Jenkins necesita permisos de lectura del fichero /etc/shadowPAMSecurityRealm.DisplayName=Usar autenticaci\u00f3n Unix: usuario/grupo
|
||||
PAMSecurityRealm.BelongToGroup={0} tiene que pertenecer al grupo {1} para tener acceso de lectura a /etc/shadow
|
||||
PAMSecurityRealm.RunAsUserOrBelongToGroupAndChmod=\
|
||||
Es necesario que Jenkins se ejecute como "{0}", o bien "{1}" ha de pertenecer al grupo "{2}" y ejecutar "chmod g+r /etc/shadow" para que Jenkins tenga acceso de lectura a /etc/shadow.
|
||||
|
@ -63,6 +60,6 @@ LDAPSecurityRealm.DisplayName=LDAP
|
|||
LDAPSecurityRealm.SyntaxOfServerField=La sintaxis para especificar el servidor es: SERVER o SERVER:PORT o ldaps://SERVER[:PORT]
|
||||
LDAPSecurityRealm.UnknownHost=Nombre de host desconocido: {0}
|
||||
LDAPSecurityRealm.UnableToConnect=Incapaz de conectar con {0} : {1}
|
||||
LDAPSecurityRealm.InvalidPortNumber=El puerto no es válido
|
||||
LDAPSecurityRealm.InvalidPortNumber=El puerto no es v\u00e1lido
|
||||
|
||||
HudsonPrivateSecurityRealm.WouldYouLikeToSignUp=Este {0} {1} es nuevo en Jenkins. ¿Te gustaría crear una nueva cuenta?
|
||||
HudsonPrivateSecurityRealm.WouldYouLikeToSignUp=Este {0} {1} es nuevo en Jenkins. \u00bfTe gustar\u00eda crear una nueva cuenta?
|
||||
|
|
|
@ -20,33 +20,30 @@
|
|||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
GlobalSecurityConfiguration.DisplayName=Configurer la s\u00E9curit\u00E9 globale
|
||||
GlobalSecurityConfiguration.Description=S\u00E9curiser Jenkins; d\u00E9finir qui est autoris\u00E9 \u00E0 acc\u00E9der au syst\u00E8me.
|
||||
GlobalMatrixAuthorizationStrategy.DisplayName=Sécurité basée sur une matrice
|
||||
GlobalSecurityConfiguration.DisplayName=Configurer la s\u00e9curit\u00e9 globale
|
||||
GlobalSecurityConfiguration.Description=S\u00e9curiser Jenkins; d\u00e9finir qui est autoris\u00e9 \u00e0 acc\u00e9der au syst\u00e8me.
|
||||
|
||||
LegacyAuthorizationStrategy.DisplayName=Mode legacy
|
||||
|
||||
HudsonPrivateSecurityRealm.DisplayName=Base de données des utilisateurs de Jenkins
|
||||
HudsonPrivateSecurityRealm.DisplayName=Base de donn\u00e9es des utilisateurs de Jenkins
|
||||
HudsonPrivateSecurityRealm.Details.DisplayName=Mot de passe
|
||||
HudsonPrivateSecurityRealm.Details.PasswordError=\
|
||||
Le mot de passe de confirmation n''est pas le même que le premier mot de passe. \
|
||||
Merci de vous assurer que les mots de passe sont les mêmes dans les deux cases.
|
||||
HudsonPrivateSecurityRealm.ManageUserLinks.DisplayName=Gérer les utilisateurs
|
||||
HudsonPrivateSecurityRealm.ManageUserLinks.Description=Créer/supprimer/modifier les utilisateurs qui peuvent se logger sur ce serveur Jenkins
|
||||
Le mot de passe de confirmation n''est pas le m\u00eame que le premier mot de passe. \
|
||||
Merci de vous assurer que les mots de passe sont les m\u00eames dans les deux cases.
|
||||
HudsonPrivateSecurityRealm.ManageUserLinks.DisplayName=G\u00e9rer les utilisateurs
|
||||
HudsonPrivateSecurityRealm.ManageUserLinks.Description=Cr\u00e9er/supprimer/modifier les utilisateurs qui peuvent se logger sur ce serveur Jenkins
|
||||
|
||||
FullControlOnceLoggedInAuthorizationStrategy.DisplayName=Les utilisateurs connectés peuvent tout faire
|
||||
FullControlOnceLoggedInAuthorizationStrategy.DisplayName=Les utilisateurs connect\u00e9s peuvent tout faire
|
||||
|
||||
AuthorizationStrategy.DisplayName=Tout le monde a accès à toutes les fonctionnalités
|
||||
AuthorizationStrategy.DisplayName=Tout le monde a acc\u00e8s \u00e0 toutes les fonctionnalit\u00e9s
|
||||
|
||||
LDAPSecurityRealm.DisplayName=LDAP
|
||||
|
||||
LegacySecurityRealm.Displayname=Déléguer au conteneur de servlets
|
||||
LegacySecurityRealm.Displayname=D\u00e9l\u00e9guer au conteneur de servlets
|
||||
|
||||
UserDetailsServiceProxy.UnableToQuery=Impossible de récupérer les informations utilisateur: {0}
|
||||
UserDetailsServiceProxy.UnableToQuery=Impossible de r\u00e9cup\u00e9rer les informations utilisateur: {0}
|
||||
|
||||
ProjectMatrixAuthorizationStrategy.DisplayName=Stratégie d''authorisation matricielle basée sur les projets
|
||||
|
||||
PAMSecurityRealm.DisplayName=Base de données des utilisateurs & des groupes Unix
|
||||
PAMSecurityRealm.DisplayName=Base de donn\u00e9es des utilisateurs & des groupes Unix
|
||||
|
||||
# not in use
|
||||
Permission.Permissions.Title=N/A
|
||||
|
|
|
@ -21,7 +21,6 @@
|
|||
# THE SOFTWARE.
|
||||
GlobalSecurityConfiguration.DisplayName=\u30b0\u30ed\u30fc\u30d0\u30eb\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u8a2d\u5b9a
|
||||
GlobalSecurityConfiguration.Description=Jenkins\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u8ab0\u304c\u30b7\u30b9\u30c6\u30e0\u306b\u30a2\u30af\u30bb\u30b9\u3001\u4f7f\u7528\u3067\u304d\u308b\u304b\u306a\u3069\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002
|
||||
GlobalMatrixAuthorizationStrategy.DisplayName=\u884c\u5217\u306b\u3088\u308b\u6a29\u9650\u8a2d\u5b9a
|
||||
|
||||
HudsonPrivateSecurityRealm.WouldYouLikeToSignUp=\u3053\u306e{0}\u306e{1}\u306f\u3001Jenkins\u306b\u306f\u767b\u9332\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u30b5\u30a4\u30f3\u30a2\u30c3\u30d7\u3057\u307e\u3059\u304b?
|
||||
LegacyAuthorizationStrategy.DisplayName=\u4e92\u63db\u6027\u30e2\u30fc\u30c9
|
||||
|
@ -53,8 +52,6 @@ LegacySecurityRealm.Displayname=\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u30b3\u30f3
|
|||
|
||||
UserDetailsServiceProxy.UnableToQuery={0}\u306e\u30e6\u30fc\u30b6\u30fc\u60c5\u5831\u3092\u691c\u7d22\u3067\u304d\u307e\u305b\u3093\u3002
|
||||
|
||||
ProjectMatrixAuthorizationStrategy.DisplayName=\u884c\u5217\u306b\u3088\u308b\u6a29\u9650\u8a2d\u5b9a(\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5358\u4f4d)
|
||||
|
||||
PAMSecurityRealm.DisplayName=Unix \u30e6\u30fc\u30b6\u30fc/\u30b0\u30eb\u30fc\u30d7 \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9
|
||||
PAMSecurityRealm.ReadPermission=Jenkins\u304c/etc/shadow\u3092\u8aad\u307f\u8fbc\u307f\u53ef\u80fd\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
|
||||
PAMSecurityRealm.BelongToGroup=/etc/shadow\u3092\u8aad\u3081\u308b\u3088\u3046\u306b\u3001{0} \u304c\u30b0\u30eb\u30fc\u30d7 {1} \u306b\u5c5e\u3057\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
|
||||
|
|
|
@ -20,8 +20,6 @@
|
|||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
GlobalMatrixAuthorizationStrategy.DisplayName=Matrix-gebaseerde beveiliging
|
||||
|
||||
LegacyAuthorizationStrategy.DisplayName=Legacy-mode
|
||||
|
||||
HudsonPrivateSecurityRealm.Details.DisplayName=Paswoord
|
||||
|
|
|
@ -20,14 +20,12 @@
|
|||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
GlobalMatrixAuthorizationStrategy.DisplayName=Seguran\u00E7a baseada em matriz
|
||||
|
||||
LegacyAuthorizationStrategy.DisplayName=Modo legado
|
||||
|
||||
HudsonPrivateSecurityRealm.Details.DisplayName=Senha
|
||||
HudsonPrivateSecurityRealm.Details.PasswordError=A senha confirmada n\u00E3o \u00E9 igual a senha informada. Por favor assegure-se de digitar a mesma senha duas vezes.
|
||||
HudsonPrivateSecurityRealm.Details.PasswordError=A senha confirmada n\u00e3o \u00e9 igual a senha informada. Por favor assegure-se de digitar a mesma senha duas vezes.
|
||||
|
||||
UserDetailsServiceProxy.UnableToQuery=N\u00E3o foi poss\u00EDvel buscar informa\u00E7\u00F5es do usu\u00E1rio\: {0}
|
||||
UserDetailsServiceProxy.UnableToQuery=N\u00e3o foi poss\u00edvel buscar informa\u00e7\u00f5es do usu\u00e1rio\: {0}
|
||||
|
||||
# not in use
|
||||
Permission.Permissions.Title=N/A
|
||||
|
@ -36,32 +34,30 @@ PAMSecurityRealm.Success=Sucesso
|
|||
# Unable to connect to {0} : {1}
|
||||
LDAPSecurityRealm.UnableToConnect=Incapaz de conectar {0} : {1}
|
||||
# Logged-in users can do anything
|
||||
FullControlOnceLoggedInAuthorizationStrategy.DisplayName=Usu\u00E1rios logados n\u00E3o conseguem fazer nada
|
||||
FullControlOnceLoggedInAuthorizationStrategy.DisplayName=Usu\u00e1rios logados n\u00e3o conseguem fazer nada
|
||||
# Unix user/group database
|
||||
PAMSecurityRealm.DisplayName=Usu\u00E1rio Uniz / grupo banco da dados
|
||||
PAMSecurityRealm.DisplayName=Usu\u00e1rio Uniz / grupo banco da dados
|
||||
# User ''{0}''
|
||||
PAMSecurityRealm.User=Usu\u00E1rio ''{0}''
|
||||
PAMSecurityRealm.User=Usu\u00e1rio ''{0}''
|
||||
# {0} needs to belong to group {1} to read /etc/shadow
|
||||
PAMSecurityRealm.BelongToGroup= {0} precisa pertencer ao grupo {1} para ler /etc/shadow
|
||||
# Anyone can do anything
|
||||
AuthorizationStrategy.DisplayName=Ninguem consegue fazer nada
|
||||
# Project-based Matrix Authorization Strategy
|
||||
#ProjectMatrixAuthorizationStrategy.DisplayName=
|
||||
# Invalid port number
|
||||
LDAPSecurityRealm.InvalidPortNumber=N\u00FAmero de porta inv\u00E1lido
|
||||
LDAPSecurityRealm.InvalidPortNumber=N\u00famero de porta inv\u00e1lido
|
||||
# Unknown host: {0}
|
||||
LDAPSecurityRealm.UnknownHost=Host n\u00E3o localizado {0}
|
||||
LDAPSecurityRealm.UnknownHost=Host n\u00e3o localizado {0}
|
||||
# uid: {0}
|
||||
PAMSecurityRealm.Uid=uid: {0}
|
||||
# \
|
||||
# Either Jenkins needs to run as {0} or {1} needs to belong to group {2} and ''chmod g+r /etc/shadow'' needs to be done to enable Jenkins to read /etc/shadow
|
||||
PAMSecurityRealm.RunAsUserOrBelongToGroupAndChmod=Jenkins precisa pertencer ao grupo {2} e ter acesso ''chmod g+r /etc/shadow'' para ler a pasta.
|
||||
# Current User
|
||||
PAMSecurityRealm.CurrentUser=Usu\u00E1rio atual
|
||||
PAMSecurityRealm.CurrentUser=Usu\u00e1rio atual
|
||||
# {0} is missing the {1} permission
|
||||
AccessDeniedException2.MissingPermission= {0} est\u00E1 faltando a permiss\u00E3o {1}
|
||||
AccessDeniedException2.MissingPermission= {0} est\u00e1 faltando a permiss\u00e3o {1}
|
||||
# Manage Users
|
||||
HudsonPrivateSecurityRealm.ManageUserLinks.DisplayName=Gerenciar usu\u00E1rios
|
||||
HudsonPrivateSecurityRealm.ManageUserLinks.DisplayName=Gerenciar usu\u00e1rios
|
||||
# Delegate to servlet container
|
||||
LegacySecurityRealm.Displayname=Delegar para o container servlet
|
||||
# LDAP
|
||||
|
@ -71,6 +67,6 @@ HudsonPrivateSecurityRealm.DisplayName=Base de dados interna do Jenkins
|
|||
# Jenkins needs to be able to read /etc/shadow
|
||||
PAMSecurityRealm.ReadPermission=Jenkins precisa de acesso de leitura em /etc/shadow
|
||||
# Create/delete/modify users that can log in to this Jenkins
|
||||
HudsonPrivateSecurityRealm.ManageUserLinks.Description=Criar/deletar/modificar usu\u00E1rios que logan no Jenkins
|
||||
HudsonPrivateSecurityRealm.ManageUserLinks.Description=Criar/deletar/modificar usu\u00e1rios que logan no Jenkins
|
||||
# Syntax of server field is SERVER or SERVER:PORT or ldaps://SERVER[:PORT]
|
||||
LDAPSecurityRealm.SyntaxOfServerField=Sintaxe SERVER or SERVER:PORT or ldaps://SERVER[:PORT]
|
||||
|
|
|
@ -20,8 +20,6 @@
|
|||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
GlobalMatrixAuthorizationStrategy.DisplayName=\u041c\u0430\u0442\u0440\u0438\u0447\u043d\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0430\u0432
|
||||
|
||||
LegacyAuthorizationStrategy.DisplayName="\u0422\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0439" \u0440\u0435\u0436\u0438\u043c
|
||||
|
||||
HudsonPrivateSecurityRealm.Details.DisplayName=\u041f\u0430\u0440\u043e\u043b\u044c
|
||||
|
|
|
@ -20,8 +20,6 @@
|
|||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
GlobalMatrixAuthorizationStrategy.DisplayName=Matris-temelli G\u00fcvenlik
|
||||
|
||||
LegacyAuthorizationStrategy.DisplayName=Miras modu
|
||||
|
||||
HudsonPrivateSecurityRealm.Details.DisplayName=\u015fifre
|
||||
|
|
|
@ -20,8 +20,6 @@
|
|||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
GlobalMatrixAuthorizationStrategy.DisplayName=\u5b89\u5168\u77e9\u9635
|
||||
|
||||
LegacyAuthorizationStrategy.DisplayName=\u9057\u7559\u6a21\u5f0f
|
||||
|
||||
HudsonPrivateSecurityRealm.DisplayName=Jenkins\u4e13\u6709\u7528\u6237\u6570\u636e\u5e93
|
||||
|
@ -46,8 +44,6 @@ LegacySecurityRealm.Displayname=Servlet\u5bb9\u5668\u4ee3\u7406
|
|||
|
||||
UserDetailsServiceProxy.UnableToQuery=\u6ca1\u6709\u68c0\u7d22\u5230\u8fd9\u4e2a\u7528\u6237\u4fe1\u606f: {0}
|
||||
|
||||
ProjectMatrixAuthorizationStrategy.DisplayName=\u9879\u76ee\u77e9\u9635\u6388\u6743\u7b56\u7565
|
||||
|
||||
PAMSecurityRealm.DisplayName=Unix\u7528\u6237/\u7ec4\u6570\u636e\u5e93
|
||||
PAMSecurityRealm.ReadPermission=Jenkins\u9700\u8981\u6709/etc/shadow\u8bfb\u7684\u6743\u9650
|
||||
PAMSecurityRealm.BelongToGroup={0}\u5fc5\u987b\u5c5e\u4e8e{1}\u7ec4\u6765\u8bfb\u53d6/etc/shadow
|
||||
|
|
|
@ -23,8 +23,6 @@
|
|||
GlobalSecurityConfiguration.DisplayName=\u8a2d\u5b9a\u5168\u57df\u5b89\u5168\u6027
|
||||
GlobalSecurityConfiguration.Description=\u4fdd\u8b77 Jenkins\uff0c\u5b9a\u7fa9\u8ab0\u53ef\u4ee5\u5b58\u53d6\u6216\u662f\u4f7f\u7528\u7cfb\u7d71\u3002
|
||||
|
||||
GlobalMatrixAuthorizationStrategy.DisplayName=\u77e9\u9663\u578b\u5b89\u5168\u6027
|
||||
|
||||
HudsonPrivateSecurityRealm.WouldYouLikeToSignUp=Jenkins \u4e0d\u8a8d\u5f97 {0} {1}\u3002\u60a8\u8981\u8a3b\u518a\u55ce?
|
||||
LegacyAuthorizationStrategy.DisplayName=\u820a\u7248\u6a21\u5f0f
|
||||
|
||||
|
@ -57,8 +55,6 @@ LegacySecurityRealm.Displayname=\u59d4\u6d3e\u7d66 Servlet Container
|
|||
|
||||
UserDetailsServiceProxy.UnableToQuery=\u7121\u6cd5\u67e5\u8a62\u4f7f\u7528\u8005\u8cc7\u8a0a: {0}
|
||||
|
||||
ProjectMatrixAuthorizationStrategy.DisplayName=\u5c08\u6848\u578b\u77e9\u9663\u6388\u6b0a\u7b56\u7565
|
||||
|
||||
PAMSecurityRealm.DisplayName=Unix \u4f7f\u7528\u8005\u3001\u7fa4\u7d44\u8cc7\u6599\u5eab
|
||||
PAMSecurityRealm.ReadPermission=Jenkins \u8981\u80fd\u8b80\u53d6 /etc/shadow
|
||||
PAMSecurityRealm.BelongToGroup={0} \u8981\u5728 {1} \u7fa4\u7d44\u88e1\uff0c\u4ee5\u4fbf\u8b80\u53d6 /etc/shadow
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
<div>
|
||||
This mode is an extension to "Matrix-based security" that allows additional ACL matrix to be defined
|
||||
for each project separately (which is done on the job configuration screen.)
|
||||
|
||||
<p>
|
||||
This allows you to say things like "Joe can access project A, B, and C but he can't see D."
|
||||
See the help of "Matrix-based security" for the concept of matrix-based security in general.
|
||||
|
||||
<p>
|
||||
ACLs are additive, so the access rights granted below will be effective for all the projects.
|
||||
</div>
|
|
@ -1,13 +0,0 @@
|
|||
<div>
|
||||
Dieser Modus erweitert die "Matrix-basierte Sicherheit" um eine zusätzliche ACL-Rechtematrix,
|
||||
die für jedes Projekt individuell festgelegt werden kann (in der Konfigurationsmaske des jeweiligen Jobs).
|
||||
|
||||
<p>
|
||||
Dies erlaubt Ihnen eine Rechtevergabe wie z.B. "Joe darf auf Projekt A, B und C zugreifen - er
|
||||
soll aber Projekt D nicht sehen dürfen". Lesen Sie den Hilfetext bei "Matrix-basierte Sicherheit",
|
||||
um mehr über das Konzept der matrix-basierten Sicherheit im Allgemeinen zu erfahren.
|
||||
|
||||
<p>
|
||||
ACL-Rechte sind additiv. Dies bedeutet, dass die untenstehend erteilten Rechte für alle
|
||||
Projekte als erteilt gelten.
|
||||
</div>
|
|
@ -1,10 +0,0 @@
|
|||
<div>
|
||||
"行列による権限設定"の拡張し、プロジェクト毎に行列による権限設定することができます(ジョブの設定画面で行います)。
|
||||
|
||||
<p>
|
||||
例えば、"JoeはプロジェクトA、B、Cにアクセスできるが、Dは参照できない"といったことができます。
|
||||
行列による権限設定のコンセプトについては、"行列による権限設定"のヘルプを参照してください。
|
||||
|
||||
<p>
|
||||
ここで設定した権限は、すべてのプロジェクトの権限に追加されます。
|
||||
</div>
|
|
@ -1,9 +0,0 @@
|
|||
<div>
|
||||
这个授权模型扩展自"安全矩阵",允许把下面的ACL(访问控制列表)矩阵附加到每个项目定义中(在Job配置页面).
|
||||
|
||||
<p>
|
||||
这允许你宣布类似这样的声明"约翰能够访问A,B和C,但是不能访问D." 查看"安全矩阵"的帮助文档来了解安全矩阵.
|
||||
|
||||
<p>
|
||||
ACL配置是追加的,就是说下面的访问控制会追加到所有的项目配置中。
|
||||
</div>
|
|
@ -1,11 +0,0 @@
|
|||
<div>
|
||||
這是「矩陣型安全性」的擴充,可以分別對專案定義額外的存取控制清單 (ACL) 矩陣
|
||||
(在作業設定畫面裡調整)。
|
||||
|
||||
<p>
|
||||
讓您能做到「Joe 可以看到 A, B, C 專案,但是看不到 D」這種程度的設定。
|
||||
可以看看「矩陣型安全性」的說明,了解矩陣型安全性的基本概念。
|
||||
|
||||
<p>
|
||||
ACL 會逐一累加,所以下列授與的存取權限會影響到每一個專案。
|
||||
</div>
|
|
@ -81,6 +81,11 @@ THE SOFTWARE.
|
|||
<artifactId>mailer</artifactId>
|
||||
<version>1.5</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jenkins-ci.plugins</groupId>
|
||||
<artifactId>matrix-auth</artifactId>
|
||||
<version>1.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mortbay.jetty</groupId>
|
||||
<artifactId>jetty</artifactId>
|
||||
|
|
|
@ -338,6 +338,12 @@ THE SOFTWARE.
|
|||
<version>1.5</version>
|
||||
<type>hpi</type>
|
||||
</artifactItem>
|
||||
<artifactItem>
|
||||
<groupId>org.jenkins-ci.plugins</groupId>
|
||||
<artifactId>matrix-auth</artifactId>
|
||||
<version>1.0</version>
|
||||
<type>hpi</type>
|
||||
</artifactItem>
|
||||
</artifactItems>
|
||||
<outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/plugins</outputDirectory>
|
||||
<stripVersion>true</stripVersion>
|
||||
|
|
Loading…
Reference in New Issue