@@ -0,0 +1,4 @@
|
||||
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
|
||||
org.apereo.cas.config.CasEmbeddedContainerTomcatConfiguration,\
|
||||
org.apereo.cas.config.CasEmbeddedContainerTomcatFiltersConfiguration
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
cas.javascript.file=/themes/apereo/js/cas.js
|
||||
cas.standard.css.file=themes/apereo/css/cas.css
|
||||
@@ -0,0 +1,111 @@
|
||||
##
|
||||
# CAS Server Context Configuration
|
||||
#
|
||||
server.context-path=/cas
|
||||
server.port=8443
|
||||
|
||||
server.ssl.key-store=file:/etc/cas/thekeystore
|
||||
server.ssl.key-store-password=changeit
|
||||
server.ssl.key-password=changeit
|
||||
|
||||
server.max-http-header-size=2097152
|
||||
server.use-forward-headers=true
|
||||
server.connection-timeout=20000
|
||||
server.error.include-stacktrace=ALWAYS
|
||||
|
||||
server.compression.enabled=true
|
||||
server.compression.mime-types=application/javascript,application/json,application/xml,text/html,text/xml,text/plain
|
||||
|
||||
server.tomcat.max-http-post-size=2097152
|
||||
server.tomcat.basedir=build/tomcat
|
||||
server.tomcat.accesslog.enabled=true
|
||||
server.tomcat.accesslog.pattern=%t %a "%r" %s (%D ms)
|
||||
server.tomcat.accesslog.suffix=.log
|
||||
server.tomcat.min-spare-threads=10
|
||||
server.tomcat.max-threads=200
|
||||
server.tomcat.port-header=X-Forwarded-Port
|
||||
server.tomcat.protocol-header=X-Forwarded-Proto
|
||||
server.tomcat.protocol-header-https-value=https
|
||||
server.tomcat.remote-ip-header=X-FORWARDED-FOR
|
||||
server.tomcat.uri-encoding=UTF-8
|
||||
|
||||
spring.http.encoding.charset=UTF-8
|
||||
spring.http.encoding.enabled=true
|
||||
spring.http.encoding.force=true
|
||||
|
||||
##
|
||||
# CAS Cloud Bus Configuration
|
||||
#
|
||||
spring.cloud.bus.enabled=false
|
||||
|
||||
# Indicates that systemPropertiesOverride can be used.
|
||||
# Set to false to prevent users from changing the default accidentally. Default true.
|
||||
spring.cloud.config.allow-override=true
|
||||
|
||||
# External properties should override system properties.
|
||||
spring.cloud.config.override-system-properties=false
|
||||
|
||||
# When allowOverride is true, external properties should take lowest priority, and not override any
|
||||
# existing property sources (including local config files).
|
||||
spring.cloud.config.override-none=false
|
||||
|
||||
# spring.cloud.bus.refresh.enabled=true
|
||||
# spring.cloud.bus.env.enabled=true
|
||||
# spring.cloud.bus.destination=CasCloudBus
|
||||
# spring.cloud.bus.ack.enabled=true
|
||||
|
||||
endpoints.enabled=false
|
||||
endpoints.sensitive=true
|
||||
|
||||
endpoints.restart.enabled=false
|
||||
endpoints.shutdown.enabled=false
|
||||
|
||||
# Control the security of the management/actuator endpoints
|
||||
# The 'enabled' flag below here controls the rendering of details for the health endpoint amongst other things.
|
||||
management.security.enabled=true
|
||||
management.security.roles=ACTUATOR,ADMIN
|
||||
management.security.sessions=if_required
|
||||
management.context-path=/status
|
||||
management.add-application-context-header=false
|
||||
|
||||
# Define a CAS-specific "WARN" status code and its order
|
||||
management.health.status.order=WARN, DOWN, OUT_OF_SERVICE, UNKNOWN, UP
|
||||
|
||||
# Control the security of the management/actuator endpoints
|
||||
# With basic authentication, assuming Spring Security and/or relevant modules are on the classpath.
|
||||
security.basic.authorize-mode=role
|
||||
security.basic.path=/cas/status/**
|
||||
# security.basic.enabled=true
|
||||
# security.user.name=casuser
|
||||
# security.user.password=
|
||||
|
||||
##
|
||||
# CAS Web Application Session Configuration
|
||||
#
|
||||
server.session.timeout=300
|
||||
server.session.cookie.http-only=true
|
||||
server.session.tracking-modes=COOKIE
|
||||
|
||||
##
|
||||
# CAS Thymeleaf View Configuration
|
||||
#
|
||||
spring.thymeleaf.encoding=UTF-8
|
||||
spring.thymeleaf.cache=true
|
||||
spring.thymeleaf.mode=HTML
|
||||
spring.thymeleaf.template-resolver-order=100
|
||||
##
|
||||
# CAS Log4j Configuration
|
||||
#
|
||||
# logging.config=file:/etc/cas/log4j2.xml
|
||||
server.context-parameters.isLog4jAutoInitializationDisabled=true
|
||||
|
||||
##
|
||||
# CAS AspectJ Configuration
|
||||
#
|
||||
spring.aop.auto=true
|
||||
spring.aop.proxy-target-class=true
|
||||
|
||||
##
|
||||
# CAS Authentication Credentials
|
||||
#
|
||||
cas.authn.accept.users=casuser::Mellon
|
||||
@@ -0,0 +1,29 @@
|
||||
##
|
||||
# CAS Spring Cloud Config Client
|
||||
#
|
||||
# Name of the application for which environment settings and properties should be fetched.
|
||||
# This should map to a cas.yml or cas.properties file.
|
||||
spring.application.name=cas
|
||||
spring.profiles.active=standalone
|
||||
|
||||
# Define where the configuration server is running
|
||||
# and what credentials are used to access it.
|
||||
# By default, basic authN is used.
|
||||
spring.cloud.config.uri=http://casuser:Mellon@localhost:8888/casconfigserver
|
||||
spring.cloud.config.profile=native
|
||||
|
||||
# Configuration server is off by default.
|
||||
spring.cloud.config.enabled=false
|
||||
|
||||
spring.cloud.config.watch.enabled=true
|
||||
spring.cloud.config.watch.initialDelay=30000
|
||||
spring.cloud.config.watch.delay=1000
|
||||
|
||||
spring.cloud.config.fail-fast=true
|
||||
health.config.enabled=true
|
||||
|
||||
# Do NOT modify this line below.
|
||||
# If you wish to change the configuration directory, it's best to not
|
||||
# overlay this file, but specify the directory location via command-line
|
||||
# parameters or system properties via -D.
|
||||
# cas.standalone.configurationDirectory=/etc/cas/config
|
||||
@@ -0,0 +1,3 @@
|
||||
cas.standard.css.file=/css/cas.css
|
||||
cas.admin.css.file=/css/admin.css
|
||||
cas.javascript.file=/js/cas.js
|
||||
@@ -0,0 +1,228 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!-- Specify the refresh internal in seconds. -->
|
||||
<Configuration monitorInterval="5" packages="org.apereo.cas.logging">
|
||||
<Properties>
|
||||
<Property name="baseDir">/etc/cas/logs</Property>
|
||||
</Properties>
|
||||
<Appenders>
|
||||
<Console name="console" target="SYSTEM_OUT">
|
||||
<PatternLayout pattern="%d %p [%c] - <%m>%n"/>
|
||||
</Console>
|
||||
|
||||
<RollingFile name="file" fileName="${baseDir}/cas.log" append="true"
|
||||
filePattern="${baseDir}/cas-%d{yyyy-MM-dd-HH}-%i.log">
|
||||
<PatternLayout pattern="%highlight{%d %p [%c] - <%m>}%n"/>
|
||||
<Policies>
|
||||
<OnStartupTriggeringPolicy />
|
||||
<SizeBasedTriggeringPolicy size="10 MB"/>
|
||||
<TimeBasedTriggeringPolicy />
|
||||
</Policies>
|
||||
<DefaultRolloverStrategy max="5" compressionLevel="9">
|
||||
<Delete basePath="${baseDir}" maxDepth="2">
|
||||
<IfFileName glob="*/*.log.gz" />
|
||||
<IfLastModified age="7d" />
|
||||
</Delete>
|
||||
</DefaultRolloverStrategy>
|
||||
</RollingFile>
|
||||
<RollingFile name="auditlogfile" fileName="${baseDir}/cas_audit.log" append="true"
|
||||
filePattern="${baseDir}/cas_audit-%d{yyyy-MM-dd-HH}-%i.log">
|
||||
<PatternLayout pattern="%d %p [%c] - %m%n"/>
|
||||
<Policies>
|
||||
<OnStartupTriggeringPolicy />
|
||||
<SizeBasedTriggeringPolicy size="10 MB"/>
|
||||
<TimeBasedTriggeringPolicy />
|
||||
</Policies>
|
||||
<DefaultRolloverStrategy max="5" compressionLevel="9">
|
||||
<Delete basePath="${baseDir}" maxDepth="2">
|
||||
<IfFileName glob="*/*.log.gz" />
|
||||
<IfLastModified age="7d" />
|
||||
</Delete>
|
||||
</DefaultRolloverStrategy>
|
||||
</RollingFile>
|
||||
|
||||
<RollingFile name="perfFileAppender" fileName="${baseDir}/perfStats.log" append="true"
|
||||
filePattern="${baseDir}/perfStats-%d{yyyy-MM-dd-HH}-%i.log">
|
||||
<PatternLayout pattern="%m%n"/>
|
||||
<Policies>
|
||||
<OnStartupTriggeringPolicy />
|
||||
<SizeBasedTriggeringPolicy size="10 MB"/>
|
||||
<TimeBasedTriggeringPolicy />
|
||||
</Policies>
|
||||
<DefaultRolloverStrategy max="5" compressionLevel="9">
|
||||
<Delete basePath="${baseDir}" maxDepth="2">
|
||||
<IfFileName glob="*/*.log.gz" />
|
||||
<IfLastModified age="7d" />
|
||||
</Delete>
|
||||
</DefaultRolloverStrategy>
|
||||
</RollingFile>
|
||||
|
||||
<CasAppender name="casAudit">
|
||||
<AppenderRef ref="auditlogfile" />
|
||||
</CasAppender>
|
||||
<CasAppender name="casFile">
|
||||
<AppenderRef ref="file" />
|
||||
</CasAppender>
|
||||
<CasAppender name="casConsole">
|
||||
<AppenderRef ref="console" />
|
||||
</CasAppender>
|
||||
<CasAppender name="casPerf">
|
||||
<AppenderRef ref="perfFileAppender" />
|
||||
</CasAppender>
|
||||
</Appenders>
|
||||
<Loggers>
|
||||
<AsyncLogger name="com.couchbase" level="off" additivity="false" includeLocation="true">
|
||||
<AppenderRef ref="casConsole"/>
|
||||
<AppenderRef ref="casFile"/>
|
||||
</AsyncLogger>
|
||||
<AsyncLogger name="org.apereo.cas.web.CasWebApplication" level="info" additivity="false" includeLocation="true">
|
||||
<AppenderRef ref="casConsole"/>
|
||||
<AppenderRef ref="casFile"/>
|
||||
</AsyncLogger>
|
||||
<AsyncLogger name="org.springframework.security" level="off" additivity="false">
|
||||
<AppenderRef ref="casConsole"/>
|
||||
<AppenderRef ref="casFile"/>
|
||||
</AsyncLogger>
|
||||
<AsyncLogger name="org.springframework.boot.autoconfigure.security" level="info" additivity="false">
|
||||
<AppenderRef ref="casConsole"/>
|
||||
<AppenderRef ref="casFile"/>
|
||||
</AsyncLogger>
|
||||
<AsyncLogger name="org.jasig.cas.client" level="info" additivity="false" includeLocation="true">
|
||||
<AppenderRef ref="casConsole"/>
|
||||
<AppenderRef ref="casFile"/>
|
||||
</AsyncLogger>
|
||||
<AsyncLogger name="org.apereo" level="info" additivity="false" includeLocation="true">
|
||||
<AppenderRef ref="casConsole"/>
|
||||
<AppenderRef ref="casFile"/>
|
||||
</AsyncLogger>
|
||||
<AsyncLogger name="org.apereo.services.persondir" level="off" additivity="false" includeLocation="true">
|
||||
<AppenderRef ref="casConsole"/>
|
||||
<AppenderRef ref="casFile"/>
|
||||
</AsyncLogger>
|
||||
<AsyncLogger name="org.apache" level="error" additivity="false">
|
||||
<AppenderRef ref="casConsole"/>
|
||||
<AppenderRef ref="casFile"/>
|
||||
</AsyncLogger>
|
||||
<AsyncLogger name="org.springframework.cloud" level="info" additivity="false">
|
||||
<AppenderRef ref="casConsole"/>
|
||||
<AppenderRef ref="casFile"/>
|
||||
</AsyncLogger>
|
||||
<AsyncLogger name="org.springframework.cloud.context" level="off" additivity="false">
|
||||
<AppenderRef ref="casConsole"/>
|
||||
<AppenderRef ref="casFile"/>
|
||||
</AsyncLogger>
|
||||
<AsyncLogger name="org.springframework.boot" level="off" additivity="false">
|
||||
<AppenderRef ref="casConsole"/>
|
||||
<AppenderRef ref="casFile"/>
|
||||
</AsyncLogger>
|
||||
<AsyncLogger name="org.springframework" level="off" additivity="false">
|
||||
<AppenderRef ref="casConsole"/>
|
||||
<AppenderRef ref="casFile"/>
|
||||
</AsyncLogger>
|
||||
<AsyncLogger name="org.springframework.aop" level="off" additivity="false">
|
||||
<AppenderRef ref="casConsole"/>
|
||||
<AppenderRef ref="casFile"/>
|
||||
</AsyncLogger>
|
||||
<AsyncLogger name="org.springframework.boot.actuate.autoconfigure" level="off" additivity="false">
|
||||
<AppenderRef ref="casConsole"/>
|
||||
</AsyncLogger>
|
||||
<AsyncLogger name="org.springframework.webflow" level="off" additivity="false">
|
||||
<AppenderRef ref="casConsole"/>
|
||||
<AppenderRef ref="casFile"/>
|
||||
</AsyncLogger>
|
||||
<AsyncLogger name="org.springframework.session" level="off" additivity="false">
|
||||
<AppenderRef ref="casConsole"/>
|
||||
<AppenderRef ref="casFile"/>
|
||||
</AsyncLogger>
|
||||
<AsyncLogger name="org.springframework.amqp" level="off" additivity="false">
|
||||
<AppenderRef ref="casConsole"/>
|
||||
<AppenderRef ref="casFile"/>
|
||||
</AsyncLogger>
|
||||
<AsyncLogger name="org.springframework.integration" level="off" additivity="false">
|
||||
<AppenderRef ref="casConsole"/>
|
||||
<AppenderRef ref="casFile"/>
|
||||
</AsyncLogger>
|
||||
<AsyncLogger name="org.springframework.messaging" level="off" additivity="false">
|
||||
<AppenderRef ref="casConsole"/>
|
||||
<AppenderRef ref="casFile"/>
|
||||
</AsyncLogger>
|
||||
<AsyncLogger name="org.springframework.web" level="off" additivity="false">
|
||||
<AppenderRef ref="casConsole"/>
|
||||
<AppenderRef ref="casFile"/>
|
||||
</AsyncLogger>
|
||||
<AsyncLogger name="org.springframework.orm.jpa" level="off" additivity="false">
|
||||
<AppenderRef ref="casConsole"/>
|
||||
<AppenderRef ref="casFile"/>
|
||||
</AsyncLogger>
|
||||
<AsyncLogger name="org.springframework.scheduling" level="off" additivity="false">
|
||||
<AppenderRef ref="casConsole"/>
|
||||
<AppenderRef ref="casFile"/>
|
||||
</AsyncLogger>
|
||||
<AsyncLogger name="org.thymeleaf" level="off" additivity="false">
|
||||
<AppenderRef ref="casConsole"/>
|
||||
<AppenderRef ref="casFile"/>
|
||||
</AsyncLogger>
|
||||
<AsyncLogger name="org.pac4j" level="off" additivity="false">
|
||||
<AppenderRef ref="casConsole"/>
|
||||
<AppenderRef ref="casFile"/>
|
||||
</AsyncLogger>
|
||||
<AsyncLogger name="org.opensaml" level="off" additivity="false">
|
||||
<AppenderRef ref="casConsole"/>
|
||||
<AppenderRef ref="casFile"/>
|
||||
</AsyncLogger>
|
||||
<AsyncLogger name="net.sf.ehcache" level="off" additivity="false">
|
||||
<AppenderRef ref="casConsole"/>
|
||||
<AppenderRef ref="casFile"/>
|
||||
</AsyncLogger>
|
||||
<AsyncLogger name="com.ryantenney.metrics" level="off" additivity="false">
|
||||
<AppenderRef ref="console"/>
|
||||
<AppenderRef ref="file"/>
|
||||
</AsyncLogger>
|
||||
<AsyncLogger name="net.jradius" level="off" additivity="false">
|
||||
<AppenderRef ref="casConsole"/>
|
||||
<AppenderRef ref="casFile"/>
|
||||
</AsyncLogger>
|
||||
<AsyncLogger name="org.openid4java" level="off" additivity="false">
|
||||
<AppenderRef ref="casConsole"/>
|
||||
<AppenderRef ref="casFile"/>
|
||||
</AsyncLogger>
|
||||
<AsyncLogger name="org.ldaptive" level="off" additivity="false">
|
||||
<AppenderRef ref="casConsole"/>
|
||||
<AppenderRef ref="casFile"/>
|
||||
</AsyncLogger>
|
||||
<AsyncLogger name="com.hazelcast" level="off" additivity="false">
|
||||
<AppenderRef ref="casConsole"/>
|
||||
<AppenderRef ref="casFile"/>
|
||||
</AsyncLogger>
|
||||
<AsyncLogger name="org.springframework.context.annotation" level="off" additivity="false" />
|
||||
<AsyncLogger name="org.springframework.boot.devtools" level="off" additivity="false" />
|
||||
<AsyncLogger name="org.jasig.spring" level="off" additivity="false">
|
||||
<AppenderRef ref="casConsole"/>
|
||||
<AppenderRef ref="casFile"/>
|
||||
</AsyncLogger>
|
||||
<AsyncLogger name="org.springframework.web.socket" level="off" additivity="false">
|
||||
<AppenderRef ref="casConsole"/>
|
||||
<AppenderRef ref="casFile"/>
|
||||
</AsyncLogger>
|
||||
<AsyncLogger name="org.apache.cxf" level="off" additivity="false">
|
||||
<AppenderRef ref="casConsole"/>
|
||||
<AppenderRef ref="casFile"/>
|
||||
</AsyncLogger>
|
||||
<AsyncLogger name="org.apache.http" level="off" additivity="false">
|
||||
<AppenderRef ref="casConsole"/>
|
||||
<AppenderRef ref="casFile"/>
|
||||
</AsyncLogger>
|
||||
<AsyncLogger name="perfStatsLogger" level="info" additivity="false" includeLocation="true">
|
||||
<AppenderRef ref="casPerf"/>
|
||||
</AsyncLogger>
|
||||
<AsyncLogger name="org.apereo.cas.web.flow" level="info" additivity="true" includeLocation="true">
|
||||
<AppenderRef ref="casFile"/>
|
||||
</AsyncLogger>
|
||||
<AsyncLogger name="org.apereo.inspektr.audit.support" level="info" includeLocation="true">
|
||||
<AppenderRef ref="casAudit"/>
|
||||
<AppenderRef ref="casFile"/>
|
||||
</AsyncLogger>
|
||||
<AsyncRoot level="error">
|
||||
<AppenderRef ref="casConsole"/>
|
||||
</AsyncRoot>
|
||||
</Loggers>
|
||||
</Configuration>
|
||||
@@ -0,0 +1,571 @@
|
||||
screen.welcome.welcome=Congratulations on bringing CAS online! To learn how to authenticate, please review the default authentication handler configuration.
|
||||
screen.welcome.security=For security reasons, please <a href="logout">log out</a> and exit your web browser when you are done accessing \
|
||||
services that require authentication!
|
||||
screen.welcome.instructions=Enter your Username and Password
|
||||
screen.welcome.label.netid=<span class="accesskey">U</span>sername:
|
||||
screen.welcome.label.netid.accesskey=u
|
||||
screen.welcome.label.password=<span class="accesskey">P</span>assword:
|
||||
screen.welcome.label.password.accesskey=p
|
||||
screen.welcome.label.publicstation=I am at a public workstation.
|
||||
screen.welcome.label.warn=<span class="accesskey">W</span>arn me!
|
||||
screen.welcome.label.warn.accesskey=w
|
||||
screen.welcome.label.warnremove=Do not warn me again
|
||||
screen.welcome.button.login=LOGIN
|
||||
screen.welcome.button.logout=LOGOUT
|
||||
screen.welcome.button.loginwip=One moment please...
|
||||
screen.welcome.button.register=Register
|
||||
screen.welcome.button.print=Print
|
||||
screen.welcome.button.clear=CLEAR
|
||||
screen.welcome.label.loginwith=Or login with:
|
||||
|
||||
screen.cookies.disabled.title=Browser cookies disabled
|
||||
screen.cookies.disabled.message=Your browser does not accept cookies. Single Sign On WILL NOT WORK.
|
||||
|
||||
screen.pm.button.submit=SUBMIT
|
||||
screen.pm.button.cancel=CANCEL
|
||||
screen.pm.button.forgotpwd=<a href="https://pwd.example.org">Forgot your password? </a>
|
||||
screen.pm.button.resetPassword=Reset your password
|
||||
screen.pm.reset.username=Username:
|
||||
screen.pm.reset.heading=Password Reset Failed
|
||||
screen.pm.reset.message=We were unable to process your password reset request at this time.
|
||||
screen.pm.reset.qstitle=Answer Security Questions
|
||||
screen.pm.reset.qsmsg=Welcome <strong>{0}</strong>. Before you can reset your password, you must answer the following security questions.
|
||||
screen.pm.reset.sentInstructions=You should shortly receive an email with follow-instructions to reset your password. Please do not take \
|
||||
long as the password reset instructions may expire.
|
||||
screen.pm.reset.sent=Password Reset Instructions Sent Successfully.
|
||||
screen.pm.reset.title=Reset your password
|
||||
screen.pm.reset.instructions=Please provide your username. You will receive an email with follow-up instructions on how to reset \
|
||||
your password.
|
||||
screen.pm.password.policyViolation=Password does not match the password policy requirement.
|
||||
screen.pm.password.confirmMismatch=Passwords do not match.
|
||||
screen.pm.password.strength=Strength:
|
||||
screen.pm.password.strength.0=Worst
|
||||
screen.pm.password.strength.1=Bad
|
||||
screen.pm.password.strength.2=Weak
|
||||
screen.pm.password.strength.3=Good
|
||||
screen.pm.password.strength.4=Strong
|
||||
|
||||
screen.aup.heading=Acceptable Usage Policy
|
||||
screen.aup.button.accept=ACCEPT
|
||||
screen.aup.button.cancel=CANCEL
|
||||
|
||||
screen.consent.confirm=CONFIRM
|
||||
screen.consent.cancel=CANCEL
|
||||
screen.consent.title=Attribute Consent
|
||||
screen.consent.attributes=Attributes
|
||||
screen.consent.options=Options
|
||||
screen.consent.attributes.header=The following attributes will be released to <strong>[{0}]</strong>:
|
||||
screen.consent.attributes.attribute=Attribute
|
||||
screen.consent.attributes.values=Value(s)
|
||||
screen.consent.attributes.data.info=Showing _START_ to _END_ of _TOTAL_ entries
|
||||
screen.consent.options.header=How should I be prompted for consent again?
|
||||
screen.consent.options.always=<strong>Every Time</strong>
|
||||
screen.consent.options.desc.always=Show the consent screen every time I attempt to log into {0}.
|
||||
screen.consent.options.attributename=<strong>Attribute Name</strong>
|
||||
screen.consent.options.desc.attributename=Show the consent screen, if an attribute is added or removed from the collection of attributes released to {0}.
|
||||
screen.consent.options.attributevalue=<strong>Attribute Value</strong>
|
||||
screen.consent.options.desc.attributevalue.intro=Show the consent screen, if:
|
||||
screen.consent.options.desc.attributevalue.first=A new attribute is authorized for release to {0}.
|
||||
screen.consent.options.desc.attributevalue.second=An attribute is removed from the attribute bundle previously released to {0}.
|
||||
screen.consent.options.desc.attributevalue.third=The value of an attribute authorized for release to {0} has changed.
|
||||
screen.consent.options.reminder.header=How often should I be reminded to consent again?
|
||||
screen.consent.options.reminder.expl=Show the consent screen, as a reminder, in the event that there is no change to the collection of attributes released to {0}.
|
||||
screen.consent.options.timeunit.seconds=Seconds
|
||||
screen.consent.options.timeunit.minutes=Minutes
|
||||
screen.consent.options.timeunit.hours=Hours
|
||||
screen.consent.options.timeunit.days=Days
|
||||
screen.consent.options.timeunit.weeks=Weeks
|
||||
screen.consent.options.timeunit.months=Months
|
||||
screen.consent.options.timeunit.years=Years
|
||||
|
||||
screen.consent.review.header=Review Attribute Consent
|
||||
screen.consent.review.loading=Loading consent decisions...
|
||||
screen.consent.review.noconsentdecisions=There are no consent decisions registered for you.
|
||||
screen.consent.review.success=Consent decision was deleted successfully.
|
||||
screen.consent.review.error=There was an error!
|
||||
screen.consent.review.confirm=Delete consent decision for [{}]?
|
||||
screen.consent.review.yes=Yes
|
||||
screen.consent.review.no=No
|
||||
screen.consent.review.date=Date
|
||||
screen.consent.review.service=Service
|
||||
screen.consent.review.delete=DELETE
|
||||
screen.consent.review.createddate=Created Date:
|
||||
screen.consent.review.reminder=Reminder:
|
||||
screen.consent.review.option=Option:
|
||||
screen.consent.review.options.attributename=Attribute Name
|
||||
screen.consent.review.options.attributevalue=Attribute Value
|
||||
screen.consent.review.options.always=Always
|
||||
screen.consent.review.options.desc.always=Show the consent screen every time I attempt to log in.
|
||||
screen.consent.review.options.desc.attributename=Show the consent screen, if an attribute is added or removed from the collection of attributes released.
|
||||
screen.consent.review.options.desc.attributevalue=Show the consent screen, if 1) a new attribute is authorized for release, 2) an attribute is removed from the attribute bundle previously released, 3) the value of an attribute authorized for release has changed.
|
||||
screen.consent.review.attributes=Attributes:
|
||||
screen.consent.review.data.search=Search
|
||||
screen.consent.review.data.zerorecords=No matching decisions found
|
||||
screen.consent.review.data.info=Showing _START_ to _END_ of _TOTAL_ entries
|
||||
screen.consent.review.data.infofiltered=(filtered from _MAX_ total entries)
|
||||
screen.consent.review.data.infoempty=No decisions to show
|
||||
screen.consent.review.logout.success=You have successfully logged out of the Consent Review page. You may completely <a href="../logout">log out</a> of the Central Authentication Service and end your single sign-on session.
|
||||
|
||||
screen.nonsecure.title=Non-secure Connection
|
||||
screen.nonsecure.message=You are currently accessing CAS over a non-secure connection. Single Sign On WILL NOT WORK. In order to have single sign on work, you MUST log in over HTTPS.
|
||||
|
||||
screen.defaultauthn.title=Static Authentication
|
||||
screen.defaultauthn.heading=CAS is configured to accept a static list of users for primary authentication. Please be advised that this is ONLY useful for \
|
||||
demo purposes. It is recommended that you connect CAS to LDAP, JDBC, etc instead.
|
||||
logo.title=go to Apereo home page
|
||||
copyright=Copyright © 2005–2018 Apereo, Inc.
|
||||
screen.capslock.on = CAPSLOCK key is turned on!
|
||||
screen.button.continue=Continue
|
||||
screen.post.response.message=You are being redirected to {0}.
|
||||
|
||||
screen.interrupt.title=Authentication Interrupt
|
||||
screen.interrupt.message=The authentication flow has been interrupted. CAS has not yet established a single sign-on session for <strong>{0}</strong>.
|
||||
|
||||
screen.mdui.infolink.text=<a href="{0}" target="_blank">More information about this application</a>.
|
||||
screen.mdui.privacylink.text=<a href="{0}" target="_blank">Privacy statement for application</a>.
|
||||
|
||||
screen.interrupt.btn.proceed=Proceed
|
||||
screen.interrupt.btn.cancel=Cancel
|
||||
|
||||
# Generic Error Pages 401, 404, 500, etc
|
||||
########################################
|
||||
screen.error.page.heading=Error
|
||||
screen.error.page.title.accessdenied=Error - 401
|
||||
screen.error.page.title.permissiondenied=Error - Permission Denied
|
||||
screen.error.page.title.pagenotfound=Error - Page Not Found
|
||||
screen.error.page.title.requestunsupported=Error - Unsupported Request
|
||||
screen.error.page.accessdenied=Access Denied
|
||||
screen.error.page.permissiondenied=You do not have permission to view this page.
|
||||
screen.error.page.requestunsupported=The request type or syntax is not supported.
|
||||
screen.error.page.loginagain=Login Again
|
||||
screen.error.page.notfound=Page Not Found
|
||||
screen.error.page.doesnotexist=The page you are attempting to access does not exist at the moment.
|
||||
screen.error.page.authdenied=Authorization Denied
|
||||
|
||||
# Remember-Me Authentication
|
||||
screen.rememberme.checkbox.title=Remember Me
|
||||
|
||||
# Gua
|
||||
screen.gua.confirm.message=If you do not recognize this image as yours, do NOT continue.
|
||||
|
||||
# Blocked Errors Page
|
||||
screen.error.page.title.blocked=Error - Permission Denied
|
||||
screen.blocked.header=Access Denied
|
||||
screen.blocked.message=You've entered the wrong password for the user too many times. You've been throttled.
|
||||
AbstractAccessDecisionManager.accessDenied=You are not authorized to access this resource. Contact your CAS administrator for more info.
|
||||
|
||||
#Confirmation Screen Messages
|
||||
screen.confirmation.message=You asked to be warned before logging into applications. Please proceed.
|
||||
screen.authentication.warning=Authentication Succeeded with Warnings
|
||||
|
||||
#Generic Success Screen Messages
|
||||
screen.success.header=Log In Successful
|
||||
screen.success.success=You, <strong>{0}</strong>, have successfully logged into the Central Authentication Service. However, you are seeing \
|
||||
this page because CAS does not know about your target destination and how to get you there. Examine the authentication request again and \
|
||||
make sure a target service/application that is authorized and registered with CAS is specified.
|
||||
screen.success.security=When you are finished, for security reasons, please <a href="logout">log out</a> and exit your web browser.
|
||||
|
||||
#Logout Screen Messages
|
||||
screen.logout.confirm.header=Do you want to log out completely?
|
||||
screen.logout.confirm.text=An application may have redirected you to the Central Authentication Service \
|
||||
to completely log you out and destroy your single sign-on session. If you choose to log out, you will be asked again \
|
||||
to provide your credentials and re-autheticate once you attempt to access an application.<p><p><br>Do you want to proceed?
|
||||
|
||||
screen.logout.header=Logout successful
|
||||
screen.logout.success=You have successfully logged out of the Central Authentication Service. You may <a href="login">log in</a> again.
|
||||
screen.logout.fc.success=You have successfully logged out of the Central Authentication Service. Given single logout is enabled with CAS, \
|
||||
the following list of applications are <strong> only notified</strong> to log you out and destroy your user session. Remember that this \
|
||||
is just a notification, not a guarantee. It is up the application itself to honor these notifications and properly take action to log you \
|
||||
out.
|
||||
screen.logout.security=For security reasons, exit your web browser.
|
||||
|
||||
screen.service.sso.error.header=Re-Authentication Required to Access this Service
|
||||
screen.service.sso.error.message=You attempted to access a service that requires authentication without re-authenticating. Please try authenticating again</a>.
|
||||
screen.service.required.message=You attempted authentication without specifying the target application. Please re-examine the request and try again.
|
||||
|
||||
captchaError=reCAPTCHA validation failed.
|
||||
username.required=Username is a required field.
|
||||
password.required=Password is a required field.
|
||||
|
||||
# Password Management
|
||||
confirmedPassword.required=Password must be confirmed.
|
||||
pm.passwordsMustMatch=Provided passwords do not match.
|
||||
pm.passwordFailedCriteria=Provided password does not satisfy the password security policy. Please try again.
|
||||
pm.updateFailure=Account password could not be modified. Please try again.
|
||||
|
||||
# Authentication failure messages
|
||||
authenticationFailure.AccountDisabledException=This account has been disabled.
|
||||
authenticationFailure.AccountLockedException=This account has been locked.
|
||||
authenticationFailure.AccountExpiredException=This account has expired and is forbidden to login at this time.
|
||||
authenticationFailure.CredentialExpiredException=Your password has expired.
|
||||
authenticationFailure.InvalidLoginLocationException=You cannot login from this workstation.
|
||||
authenticationFailure.InvalidLoginTimeException=Your account is forbidden to login at this time.
|
||||
authenticationFailure.AccountNotFoundException=Invalid credentials.
|
||||
authenticationFailure.FailedLoginException=Invalid credentials.
|
||||
authenticationFailure.SurrogateAuthenticationException=You are not authorized to impersonate the indicated user at this time.
|
||||
authenticationFailure.AccountPasswordMustChangeException=Your account password has expired and must be changed.
|
||||
authenticationFailure.UnauthorizedServiceForPrincipalException=Service access denied due to missing privileges.
|
||||
authenticationFailure.UNKNOWN=Invalid credentials.
|
||||
authenticationFailure.AuthenticationException=Credentials are rejected/invalid and authentication attempt has failed.
|
||||
|
||||
INVALID_REQUEST_PROXY=The request is incorrectly formatted. Ensure all required parameters are properly encoded and included.
|
||||
INVALID_TICKET_SPEC=Ticket failed validation specification. Possible errors could include attempting to validate a Proxy Ticket via a Service Ticket validator, or not complying with the renew true request.
|
||||
INVALID_REQUEST=service and ticket parameters are both required
|
||||
INVALID_AUTHENTICATION_CONTEXT=The validation request for [''{0}''] cannot be satisfied. The request is either unrecognized or unfulfilled.
|
||||
INVALID_TICKET=Ticket ''{0}'' not recognized
|
||||
INVALID_PROXY_GRANTING_TICKET=PGT already generated for this ST. Cannot grant more than one PGT for ST
|
||||
INVALID_SERVICE=Ticket ''{0}'' does not match supplied service. The original service was ''{1}'' and the supplied service was ''{2}''.
|
||||
INVALID_PROXY_CALLBACK=The supplied proxy callback url ''{0}'' could not be authenticated. Either ''{0}'' cannot be reached, it is not \
|
||||
allowed to exercise proxy authentication.
|
||||
UNAUTHORIZED_SERVICE_PROXY=The supplied service ''{0}'' is not authorized to use CAS proxy authentication.
|
||||
UNSATISFIED_AUTHN_POLICY=Service access denied due to an unsatisfied authentication policy.
|
||||
|
||||
screen.service.error.header=Application Not Authorized to Use CAS
|
||||
service.principal.resolution.error=CAS is unable to determine the correct authentication principal. \
|
||||
Either the principal could not be resolved correctly as a single unique entity or CAS has found \
|
||||
mixed/multiple candidate principals and is unable to decide which should be used, with accuracy. \
|
||||
This error may also be caused if the authenticated principal is not allowed to access the target application \
|
||||
due to missing privileges set by the CAS server authorization policies.
|
||||
service.not.authorized.missing.attr=You are not authorized to access the application as your account \
|
||||
is missing privileges required by the CAS server to authenticate into this service. Please notify your support desk.
|
||||
screen.service.error.message=The application you attempted to authenticate to is not authorized to use CAS. \
|
||||
This usually indicates that the application is not registered with CAS, or its authorization policy defined in its registration record \
|
||||
prevents it from leveraging CAS functionality, or it's malformed and unrecognized by CAS. \
|
||||
Contact your CAS administrator to learn how you might register and integrate your application with CAS.
|
||||
screen.service.empty.error.message=The services registry of CAS is empty and has no service definitions. \
|
||||
Applications that wish to authenticate with CAS must explicitly be defined in the services registry.
|
||||
|
||||
# Surrogate Account Selection
|
||||
screen.surrogates.account.selection.header=Surrogate Account Selection
|
||||
screen.surrogates.choose.account=Choose Account
|
||||
screen.surrogates.message=<p>You are provided with a list of accounts on behalf of which you are allowed to authenticate.</p> \
|
||||
<p>Select one and continue.</p>
|
||||
screen.surrogates.button.cancel=Cancel
|
||||
screen.surrogates.account.selection.error=You are not authorized to impersonate the indicated user at this time.
|
||||
|
||||
# Password policy
|
||||
password.expiration.warning=Your password expires in {0} day(s). Please <a href="https://pm.example.edu">change your password</a> now.
|
||||
password.expiration.loginsRemaining=You have {0} login(s) remaining before you <strong>MUST</strong> change your password.
|
||||
screen.accountdisabled.heading=This account has been disabled.
|
||||
screen.accountdisabled.message=Please contact the system administrator to regain access.
|
||||
screen.accountlocked.heading=This account has been locked.
|
||||
screen.accountlocked.message=Please contact the system administrator to regain access.
|
||||
screen.expiredpass.heading=Your password has expired.
|
||||
screen.expiredpass.message=Please <a href="https://changepsw.exampple.org">change your password</a>.
|
||||
screen.mustchangepass.heading=You must change your password.
|
||||
screen.mustchangepass.message=Please <a href="https://changepsw.exampple.org">change your password</a>.
|
||||
screen.badhours.heading=Your account is forbidden to login at this time.
|
||||
screen.badhours.message=Please try again later.
|
||||
screen.authnblocked.heading=Authentication attempt is blocked.
|
||||
screen.authnblocked.message=Your authentication attempt is untrusted and unauthorized from your current workstation.
|
||||
screen.risk.authnblocked.heading=Authentication attempt is blocked.
|
||||
screen.risk.authnblocked.message=Your authentication attempt is untrusted and unauthorized from your current workstation.
|
||||
screen.badworkstation.heading=You cannot login from this workstation.
|
||||
screen.badworkstation.message=Please contact the system administrator to regain access.
|
||||
screen.button.changePassword=Change Password
|
||||
|
||||
screen.pm.success.header=Password Change Successful
|
||||
screen.pm.success.message=Your account password is successfully updated.
|
||||
|
||||
screen.pm.confirmpsw=Confirm Password:
|
||||
screen.pm.enterpsw=Enter Password:
|
||||
|
||||
screen.pac4j.unauthz.pagetitle=Unauthorized Access
|
||||
screen.pac4j.unauthz.gotoapp=Goto Application
|
||||
screen.pac4j.unauthz.login=Back to CAS
|
||||
screen.pac4j.unauthz.heading=Unauthorized Access
|
||||
screen.pac4j.unauthz.message=Either the authentication request was rejected/cancelled, or the authentication provider denied access due \
|
||||
to permissions, etc. Review logs to find the root cause of the issue.
|
||||
|
||||
# GAuth
|
||||
screen.authentication.gauth.register=Your account is not registered. Use the below settings to register your device with CAS.
|
||||
screen.authentication.gauth.key=Secret key to register is {0}
|
||||
|
||||
# OAuth
|
||||
screen.oauth.confirm.header=Authorization
|
||||
screen.oauth.confirm.message=Do you want to grant access to "{0}" ?
|
||||
screen.oauth.confirm.allow=Allow
|
||||
screen.oauth.confirm.deny=Deny
|
||||
cas.oauth.confirm.pagetitle=Approve Access
|
||||
|
||||
# OIDC
|
||||
screen.oidc.confirm.infourl=Learn more about {0}.
|
||||
screen.oidc.confirm.privacyurl=Learn about {0} privacy rules.
|
||||
|
||||
screen.oidc.confirm.scope.profile=This requests access to the profile claims excluding the address and email claims.
|
||||
screen.oidc.confirm.scope.email=This requests access to the email claims.
|
||||
screen.oidc.confirm.scope.address=This requests access to the address claims.
|
||||
screen.oidc.confirm.scope.openid=This indicates an OpenID Connect authorization request.
|
||||
screen.oidc.confirm.scope.phone=This requests access to the phone claims.
|
||||
screen.oidc.confirm.scope.offline_access=This requests access for a refresh token used for offline access.
|
||||
|
||||
screen.oidc.confirm.asksinfo=The client is asking for the following information:
|
||||
screen.oidc.confirm.dynamic=This client was dynamically registered at <code>{0}</code>.
|
||||
|
||||
# Unavailable
|
||||
screen.unavailable.header=CAS error
|
||||
screen.unavailable.heading=CAS is unable to process this request: "{0}:{1}"
|
||||
screen.unavailable.message=There was an error trying to complete your request. \
|
||||
<strong>Please notify your support desk or try again.</strong> \
|
||||
<div>Apereo is a non-profit open source software governance foundation. The CAS software is an Apereo sponsored project \
|
||||
and is freely downloadable and usable by anyone. However, Apereo does not operate the systems of anyone using the \
|
||||
software and in most cases doesn't even know who is using it or how to contact them unless they are an active part \
|
||||
of the Apereo community.<br/></br>If you are having problems logging in using CAS, \
|
||||
<strong>you will need to contact the IT staff or Help Desk of your organization for assistance</strong>. \
|
||||
<br/><br/>We wish we could be more directly helpful to you.</div>
|
||||
|
||||
screen.mfaDenied.header=MFA Denied
|
||||
screen.mfaDenied.heading=MFA attempt has been denied by provider
|
||||
screen.mfaDenied.message=Your MFA provider has denied your attempt at second factor \
|
||||
authentication. Contact your system administrator for help in restoring your account.
|
||||
|
||||
screen.mfaUnavailable.header=MFA Provider Unavailable
|
||||
screen.mfaUnavailable.heading=MFA Provider Unavailable
|
||||
screen.mfaUnavailable.message=CAS was unable to reach your configured MFA provider at this time. \
|
||||
Due to failure policies configured for the service you are attempting to access, authentication can not \
|
||||
be granted at this time.
|
||||
|
||||
#####################################################################
|
||||
# SSO Sessions View
|
||||
#####################################################################
|
||||
# No sessions found screen
|
||||
cas.ssosessions.loading=Loading SSO Sessions...
|
||||
cas.ssosessions.nosessionsfound=No sessions found.
|
||||
cas.ssosessions.button.refresh=Refresh Page
|
||||
|
||||
# Report View
|
||||
cas.ssosessions.report.pagetitle=SSO Sessions Report
|
||||
cas.ssosessions.report.panel.totalactiveprincipals=Total Active Principals
|
||||
cas.ssosessions.report.panel.usagecountsessions=Usage Count Sessions
|
||||
cas.ssosessions.report.panel.totalssosessions=Total SSO Sessions
|
||||
|
||||
cas.ssosessions.buttons.removeall=Remove All Sessions
|
||||
|
||||
cas.ssosessions.buttons.filter.all=All
|
||||
cas.ssosessions.buttons.filter.proxied=Proxied
|
||||
cas.ssosessions.buttons.filter.nonproxied=Non-Proxied
|
||||
|
||||
cas.ssosessions.table.header.principal=Principal
|
||||
cas.ssosessions.table.header.ticketgrantingticket=Ticket Granting Ticket
|
||||
cas.ssosessions.table.header.authenticationdate=Authentication Date
|
||||
cas.ssosessions.table.header.usagecount=Usage Count
|
||||
|
||||
|
||||
# Remove Session AJAX messages
|
||||
cas.sessions.ajax.error=There appears to be an error. Please try your request again.
|
||||
|
||||
#####################################################################
|
||||
# Statistics View
|
||||
#####################################################################
|
||||
# Ticket Registry Section
|
||||
cas.statistics.pagetitle=Statistics View
|
||||
cas.statistics.loading=Loading...
|
||||
cas.statistics.section.ticket.title=Ticket Statistics
|
||||
cas.statistics.section.ticket.panel.unexpiredtgts.title=Unexpired TGTs
|
||||
cas.statistics.section.ticket.panel.unexpiredsts.title=Unexpired STs
|
||||
cas.statistics.section.ticket.panel.expiredtgts.title=Expired TGTs
|
||||
cas.statistics.section.ticket.panel.expiredsts.title=Expired STs
|
||||
cas.statistics.section.ticket.button=View SSO Sessions
|
||||
|
||||
# JVM Section
|
||||
cas.statistics.section.serverstatistics.title=JVM Server Statistics
|
||||
|
||||
## memory gauges
|
||||
cas.statistics.section.serverstatistics.freememorygauge.label=Total JVM Memory
|
||||
cas.statistics.section.serverstatistics.maxmemorygauge.label=Max Memory
|
||||
|
||||
## Uptime
|
||||
cas.statistics.section.serverstatistics.panel.uptime.title=Uptime
|
||||
|
||||
## Server Info
|
||||
cas.statistics.section.serverstatistics.panel.serverinfo.title=Server Info
|
||||
cas.statistics.section.serverstatistics.panel.serverinfo.table.property.label=Property
|
||||
cas.statistics.section.serverstatistics.panel.serverinfo.table.value.label=Value
|
||||
|
||||
## Property Names
|
||||
cas.statistics.section.serverstatistics.panel.serverinfo.table.property.server.label=Server
|
||||
cas.statistics.section.serverstatistics.panel.serverinfo.table.property.casticketsuffix.label=CAS Ticket Suffix
|
||||
cas.statistics.section.serverstatistics.panel.serverinfo.table.property.starttime.label=Server Start Time
|
||||
cas.statistics.section.serverstatistics.panel.serverinfo.table.property.uptime.label=Uptime
|
||||
cas.statistics.section.serverstatistics.panel.serverinfo.table.property.memory.label=Memory
|
||||
cas.statistics.section.serverstatistics.panel.serverinfo.table.property.free=free
|
||||
cas.statistics.section.serverstatistics.panel.serverinfo.table.property.total=total
|
||||
cas.statistics.section.serverstatistics.panel.serverinfo.table.property.maxmemory.label=Maximum Memory
|
||||
cas.statistics.section.serverstatistics.panel.serverinfo.table.property.availprocessors.label=Available Processors
|
||||
|
||||
##
|
||||
## End Statistics View
|
||||
#####################################################################
|
||||
|
||||
|
||||
|
||||
#####################################################################
|
||||
# Logging Dashboard View
|
||||
#####################################################################
|
||||
## General
|
||||
cas.loggingdashboard.title=Logging Dashboard
|
||||
cas.loggingdashboard.warning=Modifications applied to the logging configuration are not persisted, and will be lost upon server restarts.
|
||||
cas.loggingdashboard.loading=Reading logging configuration
|
||||
cas.loggingdashboard.loading.error=Error loading log configuration. Please try again.
|
||||
cas.loggingdashboard.button.refresh=Refresh
|
||||
cas.loggingdashboard.configuration=Configuration
|
||||
cas.loggingdashboard.loggers=Loggers
|
||||
cas.loggingdashboard.logger=Logger
|
||||
cas.loggingdashboard.state=State
|
||||
cas.loggingdashboard.additive=Additive
|
||||
cas.loggingdashboard.level=Level
|
||||
|
||||
## Log Levels
|
||||
cas.loggingdashboard.level.off=OFF
|
||||
cas.loggingdashboard.level.fatal=FATAL
|
||||
cas.loggingdashboard.level.error=ERROR
|
||||
cas.loggingdashboard.level.warn=WARN
|
||||
cas.loggingdashboard.level.info=INFO
|
||||
cas.loggingdashboard.level.debug=DEBUG
|
||||
cas.loggingdashboard.level.trace=TRACE
|
||||
cas.loggingdashboard.level.all=ALL
|
||||
|
||||
cas.loggingdashboard.activeloggers=Active Loggers
|
||||
cas.loggingdashboard.state.on=On
|
||||
cas.loggingdashboard.state.off=Off
|
||||
cas.loggingdashboard.state.enabled=Enabled
|
||||
cas.loggingdashboard.state.disabled=Disabled
|
||||
|
||||
|
||||
|
||||
|
||||
##
|
||||
## End Logging Dashboard View
|
||||
#####################################################################
|
||||
|
||||
#####################################################################
|
||||
# Configuration View
|
||||
#####################################################################
|
||||
# Error loading screen
|
||||
cas.viewconfig.loading=Loading Configuration...
|
||||
cas.viewconfig.persistence=Changes to application configuration are applied immediately, though at this time they are only persisted in runtime memory \
|
||||
and last for as long as the CAS server is up and running. Be sure to apply any and all \
|
||||
changes directly to the underlying configuration if you wish for them to stay with you through server restarts.
|
||||
cas.viewconfig.errormessage=Error reading configuration
|
||||
cas.viewconfig.button.refresh=Refresh
|
||||
|
||||
# Report View
|
||||
cas.viewconfig.pagetitle=View CAS Configuration
|
||||
cas.viewconfig.table.column.key=Setting
|
||||
cas.viewconfig.table.column.value=Value
|
||||
|
||||
##
|
||||
## End Configuration View
|
||||
#####################################################################
|
||||
|
||||
#####################################################################
|
||||
# Configuration Metadata View
|
||||
#####################################################################
|
||||
cas.configmetadata.pagetitle=Configuration Metadata
|
||||
|
||||
##
|
||||
## End Configuration Metadata View
|
||||
#####################################################################
|
||||
|
||||
#####################################################################
|
||||
# Dashboard View
|
||||
#####################################################################
|
||||
cas.dashboard.pagetitle=Dashboard View
|
||||
cas.dashboard.loading=Loading...
|
||||
cas.dashboard.section.dashboard.title=CAS Dashboard
|
||||
cas.dashboard.section.configuration.title=Configuration Profiles
|
||||
cas.dashboard.section.server.functions.title=Server Functions
|
||||
cas.dashboard.action.button.refresh=Reload CAS Application Context
|
||||
cas.dashboard.action.button.refresh.modal.title=Refreshing CAS Configuration server to pick up changes to properties and settings.
|
||||
cas.dashboard.action.button.refresh.modal.message=The server is refreshing your changes. Please give it a few minutes and refresh the page.
|
||||
|
||||
cas.dashboard.action.button.reboot=Reboot
|
||||
cas.dashboard.action.button.reboot.modal.title=Rebooting Server
|
||||
cas.dashboard.action.button.reboot.modal.message=The server is rebooting. Please give it a few minutes and refresh the page.
|
||||
|
||||
cas.dashboard.action.button.shutdown=Shutdown
|
||||
cas.dashboard.action.button.shutdown.modal.title=Shutdown Server
|
||||
cas.dashboard.action.button.shutdown.modal.message=The server will shut down. You will need to manually restart it.
|
||||
|
||||
cas.dashboard.tooltip.autoconfiguration=Displays an auto-configuration report showing all auto-configuration candidates and the reason why they ‘were’ or ‘were not’ applied.
|
||||
cas.dashboard.tooltip.beans=Displays a complete list of all the Spring beans in your application.
|
||||
cas.dashboard.tooltip.mappings=Displays a collated list of all request mapping paths.
|
||||
cas.dashboard.tooltip.configprops=Displays a collated list of all configuration properties.
|
||||
cas.dashboard.tooltip.trace=Displays trace information (by default the last 100 HTTP requests).
|
||||
cas.dashboard.tooltip.metrics=Shows ‘metrics’ information for the CAS application
|
||||
cas.dashboard.tooltip.info=Displays CAS application info.
|
||||
cas.dashboard.tooltip.configmetadata=Displays CAS configuration metadata and documentation for configuration settings and properties.
|
||||
cas.dashboard.tooltip.discovery=Produces the current CAS server profile which contains capabilities and features supported by this deployment.
|
||||
cas.dashboard.tooltip.attrresolution=Allows CAS administrators to resolve and examine attributes associated with a given CAS principal. \
|
||||
Alternatively, examine the bundle of attributes that may be released to a given registered application by CAS.
|
||||
cas.dashboard.tooltip.health=Shows application health information (when the application is secure, a simple ‘status’ when accessed over an unauthenticated connection or full message details when authenticated).
|
||||
cas.dashboard.tooltip.env=Exposes properties from Spring container’s environment.
|
||||
cas.dashboard.tooltip.dump=Performs a thread dump.
|
||||
cas.dashboard.tooltip.services=Reports back the collection of registered services and applications.
|
||||
cas.dashboard.tooltip.status=Performs a health check on CAS configured monitors and provides status.
|
||||
cas.dashboard.tooltip.stats=Reports back ticket statistics and memory stats.
|
||||
cas.dashboard.tooltip.configpanel=Control and configure CAS settings and properties.
|
||||
cas.dashboard.tooltip.logging=Configure the CAS logging machinery and auto-monitor logs.
|
||||
cas.dashboard.tooltip.ssostatus=Reports whether the CAS server still maintains an active single sign-on status for this session.
|
||||
cas.dashboard.tooltip.ssosessions=Display and control the current active SSO sessions.
|
||||
cas.dashboard.tooltip.authnevents=Reports back a listing of authentication events that have commenced
|
||||
cas.dashboard.tooltip.trusteddevs=Shows a listing of current registered and trusted devices, relevant to multifactor authentication.
|
||||
cas.dashboard.tooltip.swf=Shows the current collection of Spring Webflow states, actions, flows and transitions.
|
||||
|
||||
#####################################################################
|
||||
# Login View
|
||||
#####################################################################
|
||||
#Resources Labels
|
||||
cas.login.pagetitle=Login
|
||||
cas.login.resources.header=Links to CAS Resources
|
||||
cas.login.resources.wiki=Documentation
|
||||
cas.login.resources.pulls=Pull Requests
|
||||
cas.login.resources.mailinglist=Mailing Lists
|
||||
cas.login.resources.chat=Chatroom
|
||||
cas.login.resources.blog=Blog
|
||||
cas.login.resources.dashboard=Dashboard
|
||||
cas.login.resources.contribguide=Contributor Guidelines
|
||||
|
||||
####
|
||||
# Acceptable Usage Policy View
|
||||
#
|
||||
cas.acceptableusagepolicyview.pagetitle=Acceptable Usage Policy View
|
||||
|
||||
####
|
||||
# Attribute Resolution View
|
||||
#
|
||||
cas.attrresolutionview.pagetitle=Attribute Resolution
|
||||
cas.attrreleaseview.pagetitle=Attribute Release
|
||||
cas.attrresolutionview.label.uid=Username:
|
||||
cas.attrresolutionview.button.submit=SUBMIT
|
||||
|
||||
##
|
||||
# MFA
|
||||
##
|
||||
cas.mfa.duologin.pagetitle=DuoSecurity Login
|
||||
cas.mfa.googleauth.pagetitle=Google Authenticator
|
||||
cas.mfa.googleauth.label.token=Token:
|
||||
cas.mfa.azure.pagetitle=Microsoft Authenticator
|
||||
cas.mfa.radius.pagetitle=Radius Authentication
|
||||
cas.mfa.yubikey.pagetitle=YubiKey Authentication
|
||||
cas.mfa.yubikey.authenticate=Use your registered YubiKey device to authenticate.
|
||||
cas.mfa.yubikey.register=Your device is not yet registered. Use the below form to register your device with CAS.
|
||||
cas.mfa.yubikey.label.token=Token:
|
||||
cas.mfa.u2f.pagetitle=U2F Authentication
|
||||
cas.mfa.u2f.authentication.device=Authentication Device
|
||||
cas.mfa.u2f.authentication.message=<p><strong>Please touch the flashing U2F device now.</strong></p><p> You may be prompted to allow \
|
||||
the site permission to access your security keys. After granting permission, the device will start to blink.</p>
|
||||
cas.mfa.u2f.register.device=Register Device
|
||||
cas.mfa.u2f.register.message=<p><strong>Please touch the flashing U2F device now.</strong></p><p> You may be prompted to allow \
|
||||
the site permission to access your security keys. After granting permission, the device will start to blink.</p>
|
||||
cas.mfa.authy.pagetitle=Authy Login
|
||||
cas.mfa.swivel.pagetitle=Swivel Authentication
|
||||
cas.mfa.swivel.label.token=Token:
|
||||
cas.mfa.swivel.label.header=Swivel Authentication
|
||||
|
||||
cas.mfa.registerdevice.label.title=Register Device
|
||||
cas.mfa.registerdevice.label.intro=Please name the current device.
|
||||
cas.mfa.registerdevice.pagetitle=Register Device
|
||||
cas.mfa.registerdevice.label.name=Name
|
||||
cas.mfa.registerdevice.button.register=Register
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
#Welcome Screen Messages
|
||||
|
||||
|
||||
screen.welcome.welcome=<span dir='rtl'>\u062A\u0647\u0627\u0646\u064A\u0646\u0627 \u0639\u0644\u0649 \u062C\u0644\u0628 CAS \u0639\u0644\u0649 \u0627\u0644\u0627\u0646\u062A\u0631\u0646\u062A!</span>
|
||||
screen.welcome.security=<span dir='rtl'>\u0644\u0623\u0633\u0628\u0627\u0628 \u0623\u0645\u0646\u064A\u0629\u060C \u0627\u0644\u0631\u062C\u0627\u0621 \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062E\u0631\u0648\u062C \u0648\u062E\u0631\u0648\u062C \u0645\u062A\u0635\u0641\u062D \u0627\u0644\u0648\u064A\u0628 \u0627\u0644\u062E\u0627\u0635 \u0628\u0643 \u0628\u0639\u062F \u0627\u0644\u062D\u0635\u0648\u0644 \u0639\u0644\u0649 \u0627\u0644\u062E\u062F\u0645\u0627\u062A \u0627\u0644\u062A\u064A \u062A\u062A\u0637\u0644\u0628 \u0627\u0644\u0645\u0635\u0627\u062F\u0642\u0629!</span>
|
||||
screen.welcome.instructions=<span dir='rtl'>\u0623\u062F\u062E\u0644 \u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645 \u0648\u0643\u0644\u0645\u0629 \u0627\u0644\u0633\u0631</span>
|
||||
screen.welcome.label.netid=<span dir='rtl'>\u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645 </span>
|
||||
screen.welcome.label.netid.accesskey=
|
||||
screen.welcome.label.password=<span dir='rtl'>\u0643\u0644\u0645\u0629 \u0627\u0644\u0633\u0631</span>
|
||||
screen.welcome.label.password.accesskey=
|
||||
screen.welcome.label.warn=<span dir='rtl'>\u062A\u062D\u0630\u0631\u0646\u064A \u0642\u0628\u0644 \u062A\u0633\u062C\u064A\u0644\u064A \u0641\u064A \u0627\u0644\u0645\u0648\u0627\u0642\u0639 \u0627\u0644\u0623\u062E\u0631\u0649.</span>
|
||||
screen.welcome.label.warn.accesskey=
|
||||
screen.welcome.button.login=\u062F\u062E\u0648\u0644
|
||||
screen.welcome.button.clear=\u0627\u0644\u063A\u0627
|
||||
|
||||
logo.title=\u0627\u0644\u0630\u0647\u0627\u0628 \u0625\u0644\u0649 \u0627\u0644\u0635\u0641\u062D\u0629 Apereo
|
||||
copyright=<span dir='rtl'>\u062D\u0642 \u0627\u0644\u0646\u0634\u0631 © 2005 - 2015 Apereo, Inc. \u062C\u0645\u064A\u0639 \u0627\u0644\u062D\u0642\u0648\u0642 \u0645\u062D\u0641\u0648\u0638\u0629.</span>
|
||||
|
||||
# Blocked Errors Page
|
||||
screen.blocked.header=<span dir='rtl'>\u0627\u0644\u0648\u0635\u0648\u0644 \u0645\u0631\u0641\u0648\u0636</span>
|
||||
screen.blocked.message=<span dir='rtl'>\u0644\u0642\u062F \u0642\u0645\u062A \u0628\u0625\u062F\u062E\u0627\u0644 \u0643\u0644\u0645\u0629 \u0645\u0631\u0648\u0631 \u062E\u0627\u0637\u0626\u0629 \u0644\u0644\u0645\u0633\u062A\u062E\u062F\u0645 \u0645\u0631\u0627\u062A \u0643\u062B\u064A\u0631\u0629 \u062C\u062F\u0627. \u0644\u0642\u062F \u0643\u0646\u062A \u0645\u062E\u0646\u0648\u0642.</span>
|
||||
|
||||
#Confirmation Screen Messages
|
||||
screen.confirmation.message=<span dir='rtl'>\u0627\u0636\u063A\u0637 \u0647\u0646\u0627 {0} \u0644\u0644\u0630\u0647\u0627\u0628 \u0625\u0644\u0649 \u0627\u0644\u062A\u0637\u0628\u064A\u0642</span>
|
||||
|
||||
#Generic Success Screen Messages
|
||||
screen.success.header=<span dir='rtl'>\u062A\u0633\u062C\u064A\u0644 \u0646\u0627\u062C\u062D</span>
|
||||
screen.success.success=<span dir='rtl'>\u0644\u0642\u062F \u0642\u0645\u062A \u0628\u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0628\u0646\u062C\u0627\u062D \u0644\u0644\u062F\u062E\u0648\u0644 \u0625\u0644\u0649 \u0645\u0631\u0643\u0632 \u0627\u0644\u0645\u0635\u0627\u062F\u0642\u0629</span>
|
||||
screen.success.security=<span dir='rtl'>\u0644\u0623\u0633\u0628\u0627\u0628 \u0623\u0645\u0646\u064A\u0629\u060C \u0627\u0644\u0631\u062C\u0627\u0621 \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062E\u0631\u0648\u062C \u0648 \u0627\u0644\u062E\u0631\u0648\u062C \u0645\u0646 \u0645\u062A\u0635\u0641\u062D \u0627\u0644\u0648\u064A\u0628 \u0627\u0644\u062E\u0627\u0635 \u0628\u0643 \u0628\u0639\u062F \u0627\u0644\u062D\u0635\u0648\u0644 \u0639\u0644\u0649 \u0627\u0644\u062E\u062F\u0645\u0627\u062A \u0627\u0644\u062A\u064A \u062A\u062A\u0637\u0644\u0628 \u0627\u0644\u0645\u0635\u0627\u062F\u0642\u0629!</span>
|
||||
|
||||
#Logout Screen Messages
|
||||
screen.logout.header=<span dir='rtl'>\u062E\u0631\u0648\u062C \u0646\u0627\u062C\u062D</span>
|
||||
screen.logout.success=<span dir='rtl'>\u0644\u0642\u062F \u0642\u0645\u062A \u0628\u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062E\u0631\u0648\u062C \u0628\u0646\u062C\u0627\u062D \u0644\u0644\u062E\u0631\u0648\u062C \u0645\u0646 \u0645\u0631\u0643\u0632 \u0627\u0644\u0645\u0635\u0627\u062F\u0642\u0629</span>
|
||||
screen.logout.security=<span dir='rtl'>\u0644\u0623\u0633\u0628\u0627\u0628 \u0623\u0645\u0646\u064A\u0629\u060C \u064A\u062C\u0628 \u0627\u0644\u062E\u0631\u0648\u062C \u0645\u0646 \u0645\u062A\u0635\u0641\u062D \u0627\u0644\u0648\u064A\u0628 \u0627\u0644\u062E\u0627\u0635 \u0628\u0643 </span>
|
||||
|
||||
|
||||
screen.service.sso.error.header=<span dir='rtl'> \u0644\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u0645\u0631\u0643\u0632 \u064A\u062C\u0628 \u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u0645\u0635\u0627\u062F\u0642\u0629 </span>
|
||||
screen.service.sso.error.message=<span dir='rtl'>\u0644\u0642\u062F \u062D\u0627\u0648\u0644\u062A \u0627\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u0649 \u062E\u062F\u0645\u0629 \u064A\u062A\u0637\u0644\u0628 \u0645\u0635\u0627\u062F\u0642\u0629 \u0645\u0646 \u062F\u0648\u0646 \u0645\u0635\u0627\u062F\u0642\u0629 \u0645\u0646 \u062C\u062F\u064A\u062F.\u0627\u0644\u0631\u062C\u0627\u0621 \u062D\u0627\u0648\u0644 \u0644\u0645\u0635\u0627\u062F\u0642\u0629 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649 {0} </span>
|
||||
|
||||
|
||||
username.required=\u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645 \u0647\u0648 \u0627\u0644\u062D\u0642\u0644 \u0627\u0644\u0645\u0637\u0644\u0648\u0628
|
||||
password.required=\u0643\u0644\u0645\u0629 \u0627\u0644\u0633\u0631 \u0647\u064A \u0627\u0644\u062D\u0642\u0644 \u0627\u0644\u0645\u0637\u0644\u0648\u0628
|
||||
error.authentication.credentials.bad= \u0623\u0648\u0631\u0627\u0642 \u0627\u0644\u0627\u0639\u062A\u0645\u0627\u062F \u0627\u0644\u062A\u064A \u0642\u062F\u0645\u062A\u0647\u0627 \u0644\u0627 \u064A\u0645\u0643\u0646 \u062A\u062D\u062F\u064A\u0647 \u0644\u0644\u0645\u0635\u0627\u062F\u0642\u0629 \u0639\u0644\u064A\u0647
|
||||
error.authentication.credentials.unsupported= \u0623\u0648\u0631\u0627\u0642 \u0627\u0644\u0627\u0639\u062A\u0645\u0627\u062F \u0627\u0644\u062A\u064A \u0642\u062F\u0645\u062A\u0647\u0627 \u063A\u064A\u0631 \u0645\u0639\u062A\u0645\u062F\u0629 \u0628\u0648\u0627\u0633\u0637\u0629
|
||||
|
||||
INVALID_REQUEST_PROXY=pgt \u0648 targetService \u0645\u0639\u0644\u0645\u0627\u062A \u06A9\u0644\u0627\u0647\u0645\u0627 \u0645\u0637\u0644\u0648\u0628
|
||||
INVALID_TICKET_SPEC=\u0641\u0634\u0644 \u0627\u0644\u062A\u062D\u0642\u0642 \u0645\u0646 \u0635\u062D\u0629 \u0645\u0648\u0627\u0635\u0641\u0627\u062A \u0627\u0644\u062A\u0630\u0627\u0643\u0631. \u064A\u0645\u0643\u0646 \u0623\u0646 \u062A\u062A\u0636\u0645\u0646 \u0623\u062E\u0637\u0627\u0621 \u0645\u062D\u062A\u0645\u0644\u0629 \u062A\u062D\u0627\u0648\u0644 \u0627\u0644\u062A\u062D\u0642\u0642 \u0645\u0646 \u0635\u062D\u0629 \u0627\u0644\u062A\u0630\u0627\u0643\u0631 \u0639\u0646 \u0637\u0631\u064A\u0642 \u0648\u0643\u064A\u0644 \u0645\u062F\u0642\u0642 \u062A\u0630\u0643\u0631\u0629 \u0627\u0644\u062E\u062F\u0645\u0629\u060C \u0623\u0648 \u0644\u0645 \u064A\u0645\u062A\u062B\u0644 \u0644\u0637\u0644\u0628 \u062A\u062C\u062F\u064A\u062F \u062D\u0642\u064A\u0642\u064A
|
||||
INVALID_REQUEST=service \u0648 ticket \u0645\u0639\u0644\u0645\u0627\u062A \u06A9\u0644\u0627\u0647\u0645\u0627 \u0645\u0637\u0644\u0648\u0628
|
||||
INVALID_TICKET=\u062A\u0630\u0643\u0631\u0629 {0} \u0644\u0627 \u064A\u0639\u062A\u0631\u0641
|
||||
INVALID_SERVICE=\u062A\u0630\u0643\u0631\u0629 {0} \u0644\u0627 \u064A\u062A\u0637\u0627\u0628\u0642 \u0645\u0639 \u0627\u0644\u062E\u062F\u0645\u0629 \u0627\u0644\u0645\u0642\u062F\u0645\u0629. \u0643\u0627\u0646\u062A \u0627\u0644\u062E\u062F\u0645\u0629 \u0627\u0644\u0623\u0635\u0644\u064A\u0629 {1} \u0648\u06A9\u0627\u0646\u062A \u0627\u0644\u062E\u062F\u0645\u0629 \u0627\u0644\u0645\u0642\u062F\u0645\u0629 {2{
|
||||
|
||||
screen.service.error.header=<span dir='rtl'>\u0627\u0644\u062A\u0637\u0628\u064A\u0642 \u0644\u0627 \u064A\u0633\u0645\u062D \u0627\u0633\u062A\u062E\u062F\u0627\u0645 CAS</span>
|
||||
screen.service.error.message=<span dir='rtl'>\u0627\u0644\u062E\u062F\u0645\u0629 \u0627\u0644\u062A\u064A \u062A\u0637\u0644\u0628\u064A\u0646\u0647\u0627 \u063A\u0631 \u0645\u0633\u0645\u0648\u062D\u0629 \u0628\u0647\u0627 \u0644\u062F\u0649 \u0627\u0633\u062A\u0639\u0645\u0627\u0644 CAS</span>
|
||||
@@ -0,0 +1,95 @@
|
||||
#Author: Evili del Rio i Silvan and Alex Henrie
|
||||
|
||||
#Welcome Screen Messages
|
||||
|
||||
|
||||
screen.welcome.welcome=Felicitats per engegar el CAS correctament! Per a aprendre com autenticar, si us plau, repasseu la configuració del gestor d'autenticació per defecte.
|
||||
screen.welcome.security=Per raons de seguretat, si us plau, tanqueu la sessió i el vostre navegador web quan hàgiu acabat d'accedir als serveis que requereixen autenticació.
|
||||
screen.welcome.instructions=Introduïu el vostre nom d'usuari i contrasenya.
|
||||
screen.welcome.label.netid=Nom d'<span class="accesskey">u</span>suari:
|
||||
screen.welcome.label.netid.accesskey=u
|
||||
screen.welcome.label.password=<span class="accesskey">C</span>ontrasenya:
|
||||
screen.welcome.label.password.accesskey=c
|
||||
screen.welcome.label.warn=<span class="accesskey">A</span>viseu-me abans d'obrir sessió en altres llocs.
|
||||
screen.welcome.label.warn.accesskey=a
|
||||
screen.welcome.button.login=INICIA SESSIÓ
|
||||
screen.welcome.button.clear=NETEJA
|
||||
|
||||
logo.title=vés a la pàgina principal de l'Apereo
|
||||
copyright=Copyright © 2005–2015 Apereo, Inc. Es reserven tots els drets.
|
||||
screen.capslock.on = La tecla BLOQ MAJ està activada!
|
||||
|
||||
# Blocked Errors Page
|
||||
screen.blocked.header=Accés denegat
|
||||
screen.blocked.message=Heu introduïda una contrasenya equivocada per al usuari massa vegades. Se us ha restringit.
|
||||
|
||||
#Confirmation Screen Messages
|
||||
screen.confirmation.message=Feu clic <a href="{0}">aquí</a> per a anar a l'aplicació.
|
||||
|
||||
#Generic Success Screen Messages
|
||||
screen.success.header=Inici de sessió reeixit
|
||||
screen.success.success=Vós, {0}, heu iniciat amb èxit la sessió al Servei Central d''Autenticació (CAS).
|
||||
screen.success.security=Per raons de seguretat, si us plau, tanqueu la sessió i el vostre navegador web quan hàgiu terminat.
|
||||
|
||||
#Logout Screen Messages
|
||||
screen.logout.header=Tancament de sessió reeixit
|
||||
screen.logout.success=Heu tancat amb èxit la sessió al Servei Central d'Autenticació (CAS).
|
||||
screen.logout.security=Per raons de seguretat, tanqueu el vostre navegador web.
|
||||
|
||||
|
||||
screen.service.sso.error.header=Cal reautenticar per a accedir a aquest servei
|
||||
screen.service.sso.error.message=Heu intentat accedir a un servei que requereix autenticació sense reautenticar. Si us plau, intenteu <a href="{0}">autenticar de nou</a>.
|
||||
|
||||
|
||||
username.required=El nom d'usuari és un camp obligatori.
|
||||
password.required=La contrasenya és un camp obligatori.
|
||||
|
||||
# Authentication failure messages
|
||||
authenticationFailure.AccountDisabledException=S'ha deshabilitat aquest compte.
|
||||
authenticationFailure.AccountLockedException=S'ha bloquejat aquest compte.
|
||||
authenticationFailure.CredentialExpiredException=La vostra contrasenya ha caducada.
|
||||
authenticationFailure.InvalidLoginLocationException=No podeu iniciar sessió des d'aquesta estació de treball.
|
||||
authenticationFailure.InvalidLoginTimeException=Està prohibit iniciar sessió amb el vostre compte en aquest moment.
|
||||
authenticationFailure.AccountNotFoundException=Les credencials són invàlides.
|
||||
authenticationFailure.FailedLoginException=Les credencials són invàlides.
|
||||
authenticationFailure.UNKNOWN=Les credencials són invàlides.
|
||||
|
||||
INVALID_REQUEST_PROXY=calen ambdós dels paràmetres 'pgt' i 'targetService'
|
||||
INVALID_TICKET_SPEC=El tiquet ha fallat l'especificació de validació. Els errors possibles poden incloure intentar validar un tiquet d'intermediari mitjançant un validador de tiquets de servei, o no complir amb la petició de renovació (renew true).
|
||||
INVALID_REQUEST=calen ambdós dels paràmetres 'service' i 'ticket'
|
||||
INVALID_TICKET=No s''ha reconegut el tiquet ''{0}''
|
||||
INVALID_SERVICE=El tiquet ''{0}'' no coincideix amb el servei proporcionat. El servei original era ''{1}'' i el servei proporcionat era ''{2}''.
|
||||
INVALID_PROXY_CALLBACK=L''adreça de retrotrucada d''intermediari proveïda ''{0}'' no s''ha pogut autenticar.
|
||||
UNAUTHORIZED_SERVICE_PROXY=El servei proporcionat ''{0}'' no està autoritzat a utilitzar l''autenticació intermediària del CAS.
|
||||
|
||||
screen.service.error.header=Aplicació no autoritzada a utilitzar el CAS
|
||||
service.not.authorized.missing.attr=No esteu autoritzat a accedir a l'aplicació perquè al vostre compte \
|
||||
li manquen els privilegis que el servidor CAS requereix per a autenticar a aquest servei. Si us plau, notifiqueu al vostre suport tècnic.
|
||||
screen.service.error.message=L'aplicació a que heu intentat autenticar no està autoritzada a utilitzar el CAS.
|
||||
screen.service.empty.error.message=El registre de serveis del CAS està buit i no té definicions de servei. \
|
||||
Les aplicacions que volen autenticar amb el CAS han de ser explícitament definides en el registre de serveis.
|
||||
|
||||
# Password policy
|
||||
password.expiration.warning=La vostra contrasenya caduca en {0} dies. Si us plau, <a href="{1}">canvieu la vostra contrasenya</a> ara.
|
||||
password.expiration.loginsRemaining=Teniu {0} inicis de sessió restant abans que <strong>HEU</strong> de canviar la vostra contrasenya.
|
||||
screen.accountdisabled.heading=S'ha deshabilitat aquest compte.
|
||||
screen.accountdisabled.message=Si us plau, contacteu a l'administrador de sistema per a recobrar accés.
|
||||
screen.accountlocked.heading=S'ha bloquejat aquest compte.
|
||||
screen.accountlocked.message=Si us plau, contacteu a l'administrador de sistema per a recobrar accés.
|
||||
screen.expiredpass.heading=La vostra contrasenya ha caducada.
|
||||
screen.expiredpass.message=Si us plau, <a href="{0}">canvieu la vostra contrasenya</a>.
|
||||
screen.mustchangepass.heading=Heu de canviar la vostra contrasenya.
|
||||
screen.mustchangepass.message=Si us plau, <a href="{0}">canvieu la vostra contrasenya</a>.
|
||||
screen.badhours.heading=Està prohibit iniciar sessió amb el vostre compte en aquest moment.
|
||||
screen.badhours.message=Si us plau, intenteu més tard.
|
||||
screen.badworkstation.heading=No podeu iniciar sessió des d'aquesta estació de treball.
|
||||
screen.badworkstation.message=Si us plau, contacteu a l'administrador de sistema per a recobrar accés.
|
||||
|
||||
# OAuth
|
||||
screen.oauth.confirm.header=Autorització
|
||||
screen.oauth.confirm.message=Voleu concedir accés al vostre perfil complet a "{0}"?
|
||||
screen.oauth.confirm.allow=Permet
|
||||
|
||||
# Unavailable
|
||||
screen.unavailable.heading=El CAS no està disponible
|
||||
screen.unavailable.message=Ha hagut un error al intentar complir amb la vostra petició. Si us plau, notifiqueu al vostre suport tècnic o intenteu de nou.
|
||||
@@ -0,0 +1,85 @@
|
||||
#Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net)
|
||||
#Welcome Screen Messages
|
||||
|
||||
INVALID_PROXY_CALLBACK = Poskytnut\u00E9 URL proxy callbacku ''{0}'' nelze autentifikovat.
|
||||
|
||||
INVALID_REQUEST = Parametry 'service' a 'ticket' jsou povinn\u00E9
|
||||
|
||||
INVALID_REQUEST_PROXY = Parametry 'pgt' a 'targetService' jsou povinn\u00E9
|
||||
|
||||
INVALID_SERVICE = Ticket ''{0}'' nesouhlas\u00ED s poskytovanou slu\u017Ebou. P\u016Fvodn\u00ED slu\u017Eba byla ''{1}'', poskytnut\u00E1 je ''{2}''.
|
||||
|
||||
INVALID_TICKET = Ticket ''{0}'' nebyl rozpozn\u00E1n
|
||||
|
||||
INVALID_TICKET_SPEC = Ticket neporo\u0161el kontrolou validity. Mo\u017En\u00E9 chyby zahrnuj\u00ED pokus o ov\u011B\u0159en\u00ED Proxy Ticketu pomoc\u00ED ov\u011B\u0159en\u00ED Service Ticketu nebo nedodr\u017Een\u00ED po\u017Eadavku na renew.
|
||||
|
||||
UNAUTHORIZED_SERVICE_PROXY = Poskytnut\u00E1 slu\u017Eba ''{0}'' nen\u00ED opr\u00E1vn\u011Bn\u00ED k pou\u017Eit\u00ED CAS proxy autentizace.
|
||||
|
||||
authenticationFailure.AccountDisabledException = Tento \u00FA\u010Det byl zak\u00E1z\u00E1n.
|
||||
authenticationFailure.AccountLockedException = Tento \u00FA\u010Det byl uzam\u010Den.
|
||||
authenticationFailure.AccountNotFoundException = Nezn\u00E1m\u00E9 p\u0159ihla\u0161ovac\u00ED \u00FAdaje.
|
||||
authenticationFailure.CredentialExpiredException = Va\u0161e heslo ji\u017E nen\u00ED platn\u00E9.
|
||||
authenticationFailure.FailedLoginException = Neplatn\u00E9 p\u0159ihla\u0161ovac\u00ED \u00FAdaje.
|
||||
authenticationFailure.InvalidLoginLocationException = Z tohoto po\u010D\u00EDta\u010De se nem\u016F\u017Eete p\u0159ihl\u00E1sit.
|
||||
authenticationFailure.InvalidLoginTimeException = P\u0159ihl\u00E1\u0161en\u00ED v tento \u010Das pro V\u00E1\u0161 \u00FA\u010Det povoleno.
|
||||
authenticationFailure.UNKNOWN = Neplatn\u00E9 p\u0159ihla\u0161ovac\u00ED \u00FAdaje.
|
||||
|
||||
copyright = Copyright © 2005–2012 Apereo, Inc. V\u0161echna pr\u00E1va vyhrazena.
|
||||
|
||||
|
||||
logo.title = j\u00EDt na str\u00E1nky Apereo
|
||||
|
||||
password.expiration.loginsRemaining = Zb\u00FDv\u00E1 V\u00E1m {0} p\u0159ihl\u00E1\u0161en\u00ED, ne\u017E budete <strong>MUSET</strong> zm\u011Bnit sv\u00E9 heslo.
|
||||
password.expiration.warning = Va\u0161e heslo vypr\u0161\u00ED za {0} dn\u00ED. <a href="{1}">Zm\u011B\u0148te pros\u00EDm ihned sv\u00E9 heslo</a>.
|
||||
|
||||
required.password = Heslo je povinn\u00FD \u00FAdaj.
|
||||
required.username = U\u017Eivatelsk\u00E9 jm\u00E9no je povinn\u00FD \u00FAdaj.
|
||||
|
||||
screen.accountdisabled.heading = Tento \u00FA\u010Det byl zak\u00E1z\u00E1n.
|
||||
screen.accountdisabled.message = Pro obnoven\u00ED p\u0159\u00EDstupu kontaktujte pros\u00EDm sv\u00E9ho syst\u00E9mov\u00E9ho administr\u00E1tora.
|
||||
screen.accountlocked.heading = Tento \u00FA\u010Det byl uzam\u010Den.
|
||||
screen.accountlocked.message = Pro obnoven\u00ED p\u0159\u00EDstupu kontaktujte pros\u00EDm sv\u00E9ho syst\u00E9mov\u00E9ho administr\u00E1tora.
|
||||
screen.badhours.heading = V\u00E1\u0161 \u00FA\u010Det nem\u00E1 povolen\u00ED k p\u0159ihl\u00E1\u0161en\u00ED v tomto \u010Dase.
|
||||
screen.badhours.message = Zkuste to pros\u00EDm pozd\u011Bji.
|
||||
screen.badworkstation.heading = Z tohoto po\u010D\u00EDta\u010De se nem\u016F\u017Eete p\u0159ihl\u00E1sit.
|
||||
screen.badworkstation.message = Pro obnoven\u00ED p\u0159\u00EDstupu kontaktujte pros\u00EDm sv\u00E9ho syst\u00E9mov\u00E9ho administr\u00E1tora.
|
||||
screen.blocked.header = P\u0159\u00EDstup odep\u0159en
|
||||
screen.blocked.message = Zadal(a) jste \u0161patn\u00E9 heslo p\u0159\u00EDli\u0161 \u010Dasto. P\u0159\u00EDtsup byl do\u010Dasn\u011B zablokov\u00E1n.
|
||||
#Confirmation Screen Messages
|
||||
screen.confirmation.message = Pro p\u0159echod na web <a href="{0}">klikn\u011Bte zde</a>.
|
||||
screen.expiredpass.heading = Va\u0161e heslo ji\u017E n\u011Bn\u00ED platn\u00E9.
|
||||
screen.expiredpass.message = <a href="{0}">Zm\u011B\u0148te pros\u00EDm sv\u00E9 heslo</a>.
|
||||
#Logout Screen Messages
|
||||
screen.logout.header = \u00DAsp\u011B\u0161n\u00E9 odhl\u00E1\u0161en\u00ED
|
||||
|
||||
screen.logout.security = Z bezpe\u010Dnostn\u00EDch d\u016Fvod\u016F uzav\u0159ete v\u0161echna okna prohl\u00ED\u017Ee\u010De.
|
||||
screen.logout.success = \u00DAsp\u011B\u0161n\u011B jste se odhl\u00E1sili od Centr\u00E1ln\u00ED Autentiza\u010Dn\u00ED Slu\u017Eby.
|
||||
screen.mustchangepass.heading = Mus\u00EDte zm\u011Bnit sv\u00E9 heslo.
|
||||
screen.mustchangepass.message = <a href="{0}">Zm\u011B\u0148te pros\u00EDm sv\u00E9 heslo</a>.
|
||||
screen.oauth.confirm.allow = Povolit
|
||||
screen.oauth.confirm.header = Autorizace
|
||||
screen.oauth.confirm.message = Chcete povolit p\u0159\u00EDstup ke sv\u00E9mu profilu pro "{0}"?
|
||||
screen.service.empty.error.message = Registr slu\u017Eeb CASu je pr\u00E1zdn\u00FD a nem\u00E1 definovan\u00E9 \u017E\u00E1dn\u00E9 slu\u017Eby. Aplikace, kter\u00E9 chcete autentizovat pomoc\u00ED CASu mus\u00EDte explicitn\u011B uv\u00E9st v registru slu\u017Eeb.
|
||||
#Service Error Messages
|
||||
screen.service.error.header = Aplikace nen\u00ED autorizovan\u00E1 k pou\u017Eit\u00ED p\u0159ihl\u0161ov\u00E1n\u00ED pomoc\u00ED CASu.
|
||||
screen.service.error.message = Aplikace ke kter\u00E9 se sna\u017E\u00EDte p\u0159ihl\u00E1sit nen\u00ED opr\u00E1vn\u011Bna k vyu\u017Eit\u00ED CASu.
|
||||
screen.service.sso.error.header = Pro tuto slu\u017Ebu je po\u017Eadov\u00E1no op\u011Btovn\u00E9 p\u0159ihl\u00E1\u0161en\u00ED
|
||||
screen.service.sso.error.message = Pokou\u0161\u00EDte se p\u0159istoupit ke slu\u017Eb\u011B, kter\u00E1 vy\u017Eaduje op\u011Btovn\u00E9 p\u0159ihl\u00E1\u0161en\u00ED. Zkuste se pros\u00EDm <a href="{0}">p\u0159ihl\u00E1sit znovu</a>.
|
||||
#Generic Success Screen Messages
|
||||
screen.success.header = \u00DAsp\u011B\u0161n\u00E9 p\u0159ihl\u00E1\u0161en\u00ED
|
||||
screen.success.security = Z bezpe\u010Dnostn\u00EDch d\u016Fvod\u016F se po ukon\u010Den\u00ED pr\u00E1ce odhla\u0161te a zav\u0159ete v\u0161echna okna prohl\u00ED\u017Ee\u010De!
|
||||
screen.success.success = \u00DAsp\u011B\u0161n\u011B jste se p\u0159ihl\u00E1sili k Centr\u00E1ln\u00ED Autentika\u010Dn\u00ED Slu\u017Eb\u011B.
|
||||
screen.unavailable.heading = CAS nen\u00ED dostupn\u00FD
|
||||
screen.unavailable.message = P\u0159i zpracov\u00E1n\u00ED Va\u0161eho po\u017Eadavku do\u0161lo k chyb\u011B. Uv\u011Bdomte pros\u00EDm syst\u00E9movou podporu nebo to zkuste znovu.
|
||||
screen.welcome.button.clear = VY\u010CISTIT
|
||||
screen.welcome.button.login = P\u0158IHL\u00C1SIT
|
||||
screen.welcome.instructions = Zadejte sv\u00E9 u\u017Eivatelsk\u00E9 jm\u00E9no a heslo
|
||||
screen.welcome.label.netid = <span class="accesskey">U</span>\u017Eivatelsk\u00E9 jm\u00E9no
|
||||
screen.welcome.label.netid.accesskey = u
|
||||
screen.welcome.label.password = <span class="accesskey">H</span>eslo:
|
||||
screen.welcome.label.password.accesskey = h
|
||||
screen.welcome.label.warn = Upo<span class="accesskey">z</span>ornit p\u0159ed p\u0159ihl\u00E1\u0161en\u00ED k jin\u00E9 aplikaci.
|
||||
screen.welcome.label.warn.accesskey = z
|
||||
screen.welcome.security = Z bezpe\u010Dnostn\u00EDch d\u016Fvod\u016F se po ukon\u010Den\u00ED pr\u00E1ce odhla\u0161te a zav\u0159ete v\u0161echna okna prohl\u00ED\u017Ee\u010De!
|
||||
|
||||
screen.welcome.welcome = Gratulujeme, \u00FAsp\u011B\u0161n\u011B jste zprovoznili CAS! Pro zji\u0161t\u011Bn\u00ED, jak se p\u0159ihl\u00E1sit, prohl\u00E1dn\u011Bte si v\u00FDchoz\u00ED konfiguraci autentifika\u010Dn\u00EDho handleru.
|
||||
@@ -0,0 +1,290 @@
|
||||
# Welcome Screen Messages GERMAN
|
||||
|
||||
screen.welcome.welcome=Glückwunsch, Sie haben Ihr CAS System zum Laufen gebracht! Der voreingestellte Authentication Handler gewährt Einlass, wenn der Benutzername dem Passwort entspricht: Nur zu, probieren Sie es aus.
|
||||
screen.welcome.security=Aus Sicherheitsgründen sollten Sie bei Verlassen der passwortgeschützten Bereiche sich explizit ausloggen und Ihren Webbrowser schließen!
|
||||
screen.welcome.instructions=Bitte geben Sie Ihre Apereo NetID und Ihr Passwort ein.
|
||||
screen.welcome.label.netid=<span class="accesskey">N</span>etID:
|
||||
screen.welcome.label.netid.accesskey=n
|
||||
screen.welcome.label.password=<span class="accesskey">P</span>asswort:
|
||||
screen.welcome.label.password.accesskey=p
|
||||
screen.welcome.label.warn=Ich möchte ge<span class="accesskey">w</span>arnt werden, bevor ich mich in einen anderen Bereich einlogge.
|
||||
screen.welcome.label.warn.accesskey=w
|
||||
screen.welcome.label.warnremove=Nicht noch einmal warnen
|
||||
screen.welcome.button.login=ANMELDEN
|
||||
screen.welcome.button.logout=ABMELDEN
|
||||
screen.welcome.button.loginwip=Einen Moment bitte...
|
||||
screen.welcome.button.register=Registrieren
|
||||
screen.welcome.button.print=Drucken
|
||||
screen.welcome.button.clear=LÖSCHEN
|
||||
screen.welcome.label.loginwith=Oder einloggen über:
|
||||
|
||||
screen.cookies.disabled.title=Cookies im Browser deaktiviert
|
||||
screen.cookies.disabled.message=Ihr Browser akzeptiert keine Cookies. Das Single Sign-On wird NICHT FUNKTIONIEREN.
|
||||
|
||||
screen.pm.button.submit=ABSENDEN
|
||||
screen.pm.button.cancel=ABBRECHEN
|
||||
screen.pm.button.forgotpwd=<a href="https://pwd.example.org">Passwort vergessen?</a>
|
||||
screen.pm.button.resetPassword=Passwort zurücksetzen
|
||||
screen.pm.reset.username=Benutzername:
|
||||
screen.pm.reset.heading=Zurücksetzen des Passworts fehlgeschlagen
|
||||
screen.pm.reset.message=Ihre Anfrage zum Zurücksetzen des Passwortes kann aktuell nicht verarbeitet werden.
|
||||
screen.pm.reset.qstitle=Beantworten Sie die Sicherheitsfragen
|
||||
screen.pm.reset.qsmsg=Willkommen <strong>{0}</strong>. Bevor Sie Ihr Passwort zurücksetzen können, müssen Sie die folgenden Sicherheitsfragen beantworten.
|
||||
screen.pm.reset.sentInstructions=Sie werden in Kürze eine E-Mail mit Anweisungen zum weiteren Vorgehen erhalten, um Ihr Passwort zurückzusetzen. Bitte führen Sie diese Anweisungen \
|
||||
möglichst schnell aus, das sie nach einer gewissen Zeit ungültig werden können.
|
||||
screen.pm.reset.sent=Anweisungen zum Zurücksetzen des Passworts erfolgreich versandt.
|
||||
screen.pm.reset.title=Passwort zurücksetzen
|
||||
screen.pm.reset.instructions=Bitte geben Sie Ihren Benutzernamen ein. Sie werden eine E-Mail mit Anweisungen zum weiteren Vorgehen erhalten.
|
||||
screen.pm.password.policyViolation=Das Passwort entspricht nicht der Passwortrichtlinie.
|
||||
screen.pm.password.confirmMismatch=Die Passwörter stimmen nicht überein.
|
||||
screen.pm.password.strength=Passwort-Stärke:
|
||||
screen.pm.password.strength.0=Grauenhaft
|
||||
screen.pm.password.strength.1=Schlecht
|
||||
screen.pm.password.strength.2=Schwach
|
||||
screen.pm.password.strength.3=Gut
|
||||
screen.pm.password.strength.4=Stark
|
||||
|
||||
screen.aup.heading=Nutzungsbedingungen
|
||||
screen.aup.button.accept=AKZEPTIEREN
|
||||
screen.aup.button.cancel=ABBRECHEN
|
||||
|
||||
screen.consent.confirm=OK
|
||||
screen.consent.cancel=ABBRECHEN
|
||||
screen.consent.title=Zustimmung
|
||||
screen.consent.attributes=Attribute
|
||||
screen.consent.options=Optionen
|
||||
screen.consent.attributes.header=Folgende Attribute werden an <strong>[{0}]</strong> übermittelt:
|
||||
screen.consent.attributes.attribute=Attribut
|
||||
screen.consent.attributes.values=Wert(e)
|
||||
screen.consent.attributes.data.info=Zeigt _START_ bis _END_ von _TOTAL_ Einträgen
|
||||
screen.consent.options.header=Wie soll ich wieder nach Zustimmung gefragt werden?
|
||||
screen.consent.options.always=<strong>Immer</strong>
|
||||
screen.consent.options.desc.always=Bei jedem Login bei {0} nach Zustimmung fragen.
|
||||
screen.consent.options.attributename=<strong>Attributnamen</strong>
|
||||
screen.consent.options.desc.attributename=Nach Zustimmung fragen, wenn ein Attribut zur Freigabe an {0} hinzugefügt oder entfernt wird.
|
||||
screen.consent.options.attributevalue=<strong>Attributwerte</strong>
|
||||
screen.consent.options.desc.attributevalue.intro=Nach Zustimmung fragen, wenn:
|
||||
screen.consent.options.desc.attributevalue.first=Ein neues Attribut zur Freigabe an {0} hinzugefügt oder entfernt wird.
|
||||
screen.consent.options.desc.attributevalue.second=Ein zuvor freigegebenes Attribut von der Freigabe an {0} entfernt wird.
|
||||
screen.consent.options.desc.attributevalue.third=Der Wert eines für {0} freigegebenen Attributs sich ändert.
|
||||
screen.consent.options.reminder.header=Wie oft soll ich wieder nach Zustimmung gefragt werden?
|
||||
screen.consent.options.reminder.expl=Als Erinnerung nach Zustimmung fragen, wenn sich an den für {0} freigegebenen Attributen nichts ändert.
|
||||
screen.consent.options.timeunit.seconds=Sekunden
|
||||
screen.consent.options.timeunit.minutes=Minuten
|
||||
screen.consent.options.timeunit.hours=Stunden
|
||||
screen.consent.options.timeunit.days=Tage
|
||||
screen.consent.options.timeunit.weeks=Wochen
|
||||
screen.consent.options.timeunit.months=Monate
|
||||
screen.consent.options.timeunit.years=Jahre
|
||||
|
||||
screen.consent.review.header=Zustimmungen bearbeiten
|
||||
screen.consent.review.loading=Lade Zustimmungen...
|
||||
screen.consent.review.noconsentdecisions=Es sind keine Zustimmungen vorhanden.
|
||||
screen.consent.review.success=Zustimmung wurde erfolgreich gelöscht.
|
||||
screen.consent.review.error=Es gab einen Fehler.
|
||||
screen.consent.review.confirm=Lösche Zustimmung für [{}]?
|
||||
screen.consent.review.yes=Ja
|
||||
screen.consent.review.no=Nein
|
||||
screen.consent.review.date=Datum
|
||||
screen.consent.review.service=Dienst
|
||||
screen.consent.review.delete=LÖSCHEN
|
||||
screen.consent.review.createddate=Erteilt am:
|
||||
screen.consent.review.reminder=Erinnerung:
|
||||
screen.consent.review.option=Option:
|
||||
screen.consent.review.options.attributename=Attributnamen
|
||||
screen.consent.review.options.attributevalue=Attributwerte
|
||||
screen.consent.review.options.always=Immer
|
||||
screen.consent.review.options.desc.always=Bei jedem Login nach Zustimmung fragen.
|
||||
screen.consent.review.options.desc.attributename=Nach Zustimmung fragen, wenn ein Attribut zur Freigabe hinzugefügt oder entfernt wird.
|
||||
screen.consent.review.options.desc.attributevalue=Nach Zustimmung fragen, wenn 1) ein neues Attribut zur Freigabe hinzugefügt wird, 2) ein zuvor freigegebenes Attribut von der Freigabe entfernt wird, 3) der Wert eines freigegebenen Attributs sich ändert.
|
||||
screen.consent.review.attributes=Attribute:
|
||||
screen.consent.review.data.search=Suchen
|
||||
screen.consent.review.data.zerorecords=Keine passenden Zustimmungen gefunden
|
||||
screen.consent.review.data.info=Zeigt _START_ bis _END_ von _TOTAL_ Einträgen
|
||||
screen.consent.review.data.infofiltered=(von insgesamt _MAX_ Einträgen)
|
||||
screen.consent.review.data.infoempty=Keine Einträge anzuzeigen
|
||||
screen.consent.review.logout.success=Sie haben sich erfolgreich abgemeldet. Sie können sich zusätzlich vollständig vom Zentralen Authentifizierungsdienst <a href="../logout">abmelden</a> und Ihre Single Sign-On Sitzung beenden.
|
||||
|
||||
screen.nonsecure.title=Unsichere Verbindung
|
||||
screen.nonsecure.message=Sie greifen auf CAS über eine unsichere Verbindung zu. Das Single Sign-On wird NICHT FUNKTIONIEREN. Damit es funktioniert, muss der Login über HTTPS erfolgen.
|
||||
|
||||
screen.defaultauthn.title=Statische Anmeldung
|
||||
screen.defaultauthn.heading=CAS ist so konfiguriert, dass eine statische Liste von Benutzern zur primären Anmeldung akzeptiert wird. Bitte beachten Sie, dass dies NUR zu Demonstrationszwecken nützlich ist. \
|
||||
Es wird empfohlen, statt dessen CAS an LDAP, JDBC, usw. anzubinden.
|
||||
logo.title=zur Apereo Seite wechseln
|
||||
copyright=Copyright © 2005–2018 Apereo, Inc.
|
||||
screen.capslock.on = Die Feststelltaste (CAPSLOCK) ist aktiviert!
|
||||
screen.button.continue=Weiter
|
||||
screen.post.response.message=Sie werden weitergleitet zu {0}.
|
||||
|
||||
screen.interrupt.title=Authentikationsunterbrechnung
|
||||
screen.interrupt.message=Die Anmeldung wurde unterbrochen. CAS hat noch keine Single Sign-On Sitzung eingerichtet <strong>{0}</strong>.
|
||||
|
||||
screen.mdui.infolink.text=<a href="{0}" target="_blank">Mehr Informationen über diese Anwendung</a>.
|
||||
screen.mdui.privacylink.text=<a href="{0}" target="_blank">Datenschutzerklärung dieser Anwendung</a>.
|
||||
|
||||
screen.interrupt.btn.proceed=Fortfahren
|
||||
screen.interrupt.btn.cancel=Abbrechen
|
||||
|
||||
# Generic Error Pages 401, 404, 500, etc
|
||||
########################################
|
||||
screen.error.page.heading=Fehler
|
||||
screen.error.page.title.accessdenied=Fehler - 401
|
||||
screen.error.page.title.permissiondenied=Fehler - Berechtigung verweigert
|
||||
screen.error.page.title.pagenotfound=Fehler - Seite nicht gefunden
|
||||
screen.error.page.title.requestunsupported=Fehler - Nicht unterstützte Anfrage
|
||||
screen.error.page.accessdenied=Zugriff verweigert
|
||||
screen.error.page.permissiondenied=Sie haben nicht die Berechtigung diese Seite zu sehen.
|
||||
screen.error.page.requestunsupported=Die Art oder die Syntay der Anfrage wird nicht unterstützt.
|
||||
screen.error.page.loginagain=Erneut anmelden
|
||||
screen.error.page.notfound=Seite nicht gefunden
|
||||
screen.error.page.doesnotexist=Die Seite, auf die Sie zugreifen möchten, existiert aktuell nicht.
|
||||
screen.error.page.authdenied=Anmeldung fehlgeschlagen
|
||||
|
||||
# Remember-Me Authentication
|
||||
screen.rememberme.checkbox.title=Angemeldet bleiben
|
||||
|
||||
# Gua
|
||||
screen.gua.confirm.message=Wenn Sie dieses Bild nicht als das Ihre erkennen, fahren Sie NICHT fort.
|
||||
|
||||
# Blocked Errors Page
|
||||
screen.error.page.title.blocked=Fehler - Berechtigung verweigert
|
||||
screen.blocked.header=Zugriff verweigert
|
||||
screen.blocked.message=Das Kennwort für den Benutzer wurde zu oft falsch eingegeben. Ihr Zugriff wird gedrosselt.
|
||||
AbstractAccessDecisionManager.accessDenied=Sie sind nicht berechtigt auf diese Ressource zuzugrifen. Kontaktieen Sie Ihren CAS-Administrator für weitere Informationen.
|
||||
|
||||
#Confirmation Screen Messages
|
||||
screen.confirmation.message=Klicken Sie <a href="{0}">hier</a> um zu der zuvor angeforderten Seite zurückzukehren.
|
||||
screen.authentication.warning=Anmeldung mit Warnungen erfolgreich
|
||||
|
||||
#Generic Success Screen Messages
|
||||
screen.success.header=Anmeldung erfolgreich
|
||||
screen.success.success=Sie haben sich erfolgreich am Central Authentication Service angemeldet.
|
||||
screen.success.security=Aus Sicherheitsgründen sollten Sie bei Verlassen der passwortgeschützten Bereiche sich explizit ausloggen und Ihren Webbrowser schliessen!
|
||||
|
||||
#Logout Screen Messages
|
||||
screen.logout.confirm.header=Möchten sie sich wirklich ganz abmelden?
|
||||
screen.logout.confirm.text=Eine Anwendung könnte Sie zum Zentralen Authentifizierungsdienst weitergeleitet haben, \
|
||||
um sich ganz abzumelden und Ihre Single Sign-On Sitzung zu beenden. Wenn Sie sich abmelden, werden Sie erneut aufgefordert Ihre \
|
||||
Zugangsdaten einzugeben und sich erneut anzumelden, sobald Sie auf eine Anwendung zugreifen.<p><p><br>Möchten Sie fortfahren?
|
||||
|
||||
screen.logout.header=Abmeldung erfolgreich
|
||||
screen.logout.success=Sie haben sich erfolgreich vom Zentralen Authentifizierungsdienst abgemeldet.
|
||||
screen.logout.fc.success=Sie haben sich erfolgreich vom Zentralen Authentifizierungsdienst abgemeldet. Für den Fall, dass Single Logout in CAS aktiviert ist, \
|
||||
werden die folgenden Anwendungen <strong>nur benachrichtigt</strong> Sie auszuloggen und Ihre Sitzung zu beenden. Denken Sie daran, dass es sich nur um eine \
|
||||
Benachrichtigung handelt, nicht um eine Garantie. Es obliegt der Anwendung selbst auf diese Benachrichtigungen zu reagieren und angemessene Schritte zu unternehmen, um Sie abzumelden.
|
||||
screen.logout.security=Aus Sicherheitsgründen sollten Sie den Browser schliessen.
|
||||
|
||||
screen.service.sso.error.header=Eine Neuanmeldung ist erforderlich, um auf den Service zuzugreifen.
|
||||
screen.service.sso.error.message=Der Service, für den Sie versucht haben, sich zu authentifizieren, hat nicht das Recht, CAS zu benutzen.
|
||||
screen.service.required.message=Sie versuchen sich anzumelden ohne die Ziel-Anwendung anzugeben. Bitte untersuchen Sie Ihre Anfrage und versuchen Sie es erneut.
|
||||
|
||||
captchaError=reCAPTCHA Bestätigung fehlgeschlagen.
|
||||
username.required=Benutzername ist ein Pflichtfeld.
|
||||
password.required=Passwort ist ein Pflichtfeld.
|
||||
|
||||
# Password Management
|
||||
confirmedPassword.required=Das Passwort muss bestätigt werden.
|
||||
pm.passwordsMustMatch=Die eingegebenen Passwörter stimmen nicht überein.
|
||||
pm.passwordFailedCriteria=Das eingegebene Passwort entspricht nicht der Passwortrichtlinie. Bitte versuchen Sie es erneut.
|
||||
pm.updateFailure=Das Passwort konnte nicht geändert werden. Bitte versuchen Sie es erneut.
|
||||
|
||||
# Authentication failure messages
|
||||
authenticationFailure.AccountDisabledException=Dieses Konto wurde deaktiviert.
|
||||
authenticationFailure.AccountLockedException=Dieses Konto wurde gesperrt.
|
||||
authenticationFailure.AccountExpiredException=Dieses Konto ist abgelaufen und zu keiner Zeit mehr zur Anmeldung berechtigt.
|
||||
authenticationFailure.CredentialExpiredException=Ihr Kennwort ist abgelaufen.
|
||||
authenticationFailure.InvalidLoginLocationException=Sie können sich von dieser Workstation nicht anmelden.
|
||||
authenticationFailure.InvalidLoginTimeException=Ihrem Konto ist es nicht gestattet sich zu diesem Zeitpunkt anzumelden.
|
||||
authenticationFailure.AccountNotFoundException=Ungültige Anmeldedaten.
|
||||
authenticationFailure.FailedLoginException=Ungültige Anmeldedaten.
|
||||
authenticationFailure.SurrogateAuthenticationException=Sie sind aktuell nicht berechtigt, die Identität des angegebene Benutzers anzunehmen.
|
||||
authenticationFailure.AccountPasswordMustChangeException=Ihr Passwort ist abgelaufen und muss geändert werden.
|
||||
authenticationFailure.UnauthorizedServiceForPrincipalException=Zugriff auf die Anwendung aufgrund fehlender Berechtigungen verweigert.
|
||||
authenticationFailure.UNKNOWN=Ungültige Anmeldedaten.
|
||||
authenticationFailure.AuthenticationException=Die Zugangsdaten sind ungültig und der Anmeldeversuch ist fehlgeschlagen.
|
||||
|
||||
INVALID_REQUEST_PROXY='pgt' und 'targetService' Parameter werden beide benötigt
|
||||
INVALID_TICKET_SPEC=Das Ticket entspricht nicht den Überprüfungsregeln. Ein möglicher Fehler könnte sein, dass versucht wurde, ein Proxy Ticket mit einem Service Ticket Validierer zu überprüfen, oder man sich nicht an den renew true Request gehalten hat.
|
||||
INVALID_REQUEST='service' und 'ticket' Parameter werden beide benötigt
|
||||
INVALID_AUTHENTICATION_CONTEXT=Die Validierungsanfrage für [''{0}''] kann nicht bedient werden. Die Anfrage ist entweder unerkannt oder unerfüllt.
|
||||
INVALID_TICKET=Ticket ''{0}'' wurde nicht anerkannt
|
||||
INVALID_PROXY_GRANTING_TICKET=PGT bereits generiert für dieses ST. Es kann nicht mehr als ein PGT für ein ST generiert werden
|
||||
INVALID_SERVICE=Ticket ''{0}'' passt nicht zum angegebenen Service. Der ursprüngliche Service war ''{1}'' und der übermittelte Service war ''{2}''.
|
||||
INVALID_PROXY_CALLBACK=Die angegebene Proxy-Callback-Url ''{0}'' kann nicht authentifiziert werden. Entweder ist ''{0}'' nicht erreichbar \
|
||||
oder nicht berechtigt, eine Proxy-Authentifikation durchzuführen.
|
||||
UNAUTHORIZED_SERVICE_PROXY=Dem angegebenen Service ''{0}'' ist es nicht gestattet eine CAS Proxy Authentifizierung zu verwenden.
|
||||
UNSATISFIED_AUTHN_POLICY=Der Zugriff auf die Anwendung wurde aufgrund einer nicht erfüllten Authentifkationsrichtlinie (authentication policy) verweigert.
|
||||
|
||||
screen.service.error.header=Anwendung nicht berechtigt CAS zu verwenden
|
||||
service.principal.resolution.error=CAS ist es nicht möglich den korrekten Prinzipal zu bestimmen. \
|
||||
Enweder konnte der Prinzipal nicht korrekt als einzelne, eindeutige Entität aufgelöst werden oder CAS hat \
|
||||
mehrere Entitäten gefunden und ist nicht in der Lage präzise zu entscheiden, welche davon genutzt werden soll. \
|
||||
Dieser Fehler kann auch auftreten, wenn der authentifizierte Prinzipal keine Berechtigung zum Zugriff auf die Ziel-Anwendung \
|
||||
hat, weil die von der Authentifikationsrichtlinie (policy) geforderten Berechtigungen fehlen.
|
||||
service.not.authorized.missing.attr=Sie sind nicht berichtigt auf diese Anwednung zuzugreifen, da Ihrem Konto \
|
||||
die Berechtigung fehlt, um Sie bei der Anwendung anzumelden. Bitte wenden Sie sich an Ihren IT-Support.
|
||||
screen.service.error.message=Die Anwendung, an die Sie sich anmelden möchten, ist nicht berechtigt CAS zu verwenden. \
|
||||
Dies ist typischer Weise in Hinweis darauf, dass die Anwendung nicht bei CAS registiert ist, die Authentifikationsrichtlinie (policy) ihres Registierungseintrags \
|
||||
die Nutzung von CAS-Funktionalität verhindert oder der Eintrag nicht wohlgeformt ist. \
|
||||
Kontaktieren Sie Ihren CAS-Administrator, um in Erfahrung zu bringen, wie Sie Ihre Anwendung ggf. bei CAS registieren und mit CAS integrieren können.
|
||||
screen.service.empty.error.message=Die Service-Registrierung des CAS Server ist leer und hat keine Service-Definitionen.\
|
||||
Anwendungen, welche über CAS authentifizieren möchten, müssen in der Services-Registrierung definiert werden.
|
||||
|
||||
# Surrogate Account Selection
|
||||
screen.surrogates.account.selection.header=Auswahl des Surrogate-Kontos
|
||||
screen.surrogates.choose.account=Wählen Sie das Konto
|
||||
screen.surrogates.message=<p>Ihnen wir eine liste der Konten angezeigt, für die es Ihnen erlaubt ist, sich in dessen Namen anzumelden.</p> \
|
||||
<p>Wählen Sie ein Konto aus und fahren Sie fort.</p>
|
||||
screen.surrogates.button.cancel=Abbrechen
|
||||
|
||||
|
||||
# Password policy
|
||||
password.expiration.warning=Ihr Kennwort läuft in {0} Tagen ab. Bitte <a href\="{1}">ändern Sie Ihr Kennwort</a>.
|
||||
password.expiration.loginsRemaining=Sie haben {0} Anmeldungen übrig, bevor Sie Ihr Kennwort ändern <strong>müssen</strong>.
|
||||
screen.accountdisabled.heading=Dieses Konto wurde deaktiviert.
|
||||
screen.accountdisabled.message=Bitte kontaktieren Sie Ihren System Administrator um wieder Zugriff zu erhalten.
|
||||
screen.accountlocked.heading=Dieses Konto wurde gesperrt.
|
||||
screen.accountlocked.message=Bitte kontaktieren Sie den Systemadministrator um wieder Zugang zu erlangen.
|
||||
screen.expiredpass.heading=Ihr Kennwort ist abgelaufen.
|
||||
screen.expiredpass.message=Bitte <a href="{0}">ändern Sie Ihr Kennwort</a>.
|
||||
screen.mustchangepass.heading=Sie müssen Ihr Kennwort ändern.
|
||||
screen.mustchangepass.message=Bitte <a href="{0}">ändern Sie Ihr Kennwort</a>.
|
||||
screen.badhours.heading=Ihrem Konto ist es nicht gestattet sich zu diesem Zeitpunkt anzumelden.
|
||||
screen.badhours.message=Bitte versuchen Sie es später noch einmal.
|
||||
screen.authnblocked.heading=Anmeldeversuch blockiert.
|
||||
screen.authnblocked.message=Der Anmeldeversuch von Ihrer aktuellen Workstation ist nicht vertrauenswürdig und unbefugt.
|
||||
screen.risk.authnblocked.heading=Anmeldeversuch blockiert.
|
||||
screen.risk.authnblocked.message=Der Anmeldeversuch von Ihrer aktuellen Workstation ist nicht vertrauenswürdig und unbefugt.
|
||||
screen.badworkstation.heading=Sie können sich von dieser Workstation aus nicht anmelden.
|
||||
screen.badworkstation.message=Bitte kontaktieren Sie Ihren System Administrator um Zugriff zu erhalten.
|
||||
screen.button.changePassword=Passwort ändern
|
||||
|
||||
screen.pm.success.header=Passwortänderung erfolgreich
|
||||
screen.pm.success.message=Das Passwort Ihres Kontos wurde erfolgreich geändert.
|
||||
|
||||
screen.pm.confirmpsw=Passwort bestätigen:
|
||||
screen.pm.enterpsw=Passwort eingeben:
|
||||
|
||||
screen.pac4j.unauthz.pagetitle=Unbefugter Zugriff
|
||||
screen.pac4j.unauthz.gotoapp=Zur Anwendung
|
||||
screen.pac4j.unauthz.login=Zurück zu CAS
|
||||
screen.pac4j.unauthz.heading=Unbefugter Zugriff
|
||||
screen.pac4j.unauthz.message=Entweder wurde Ihre Anmeldeversuch abgewiesen/abgebrochen oder die Authentifikationsstelle (authentication provider) hat den Zugriff verweigert, da \
|
||||
Berechtigungen fehlen, usw. Untersuchen Sie die Logs, um den ursprünglichen Auslöser dieses Fehlers zu finden.
|
||||
|
||||
# GAuth
|
||||
screen.authentication.gauth.register=Ihr Konto ist nicht registiert. Nutzen Sie die Einstellungen unten, um Ihr Gerät bei CAS zu registieren.
|
||||
screen.authentication.gauth.key=Der geheime Schlüssel (secret key) zur Registerung lautet {0}
|
||||
|
||||
# OAuth
|
||||
screen.oauth.confirm.header=Authorisierung
|
||||
screen.oauth.confirm.message=Wollen Sie "{0}" Zugriff auf Ihr Profil gestatten?
|
||||
screen.oauth.confirm.allow=Erlauben
|
||||
screen.oauth.confirm.deny=Verbieten
|
||||
cas.oauth.confirm.pagetitle=Zugriff genehmigen
|
||||
|
||||
# Unavailable
|
||||
screen.unavailable.header=CAS Fehler
|
||||
screen.unavailable.heading=CAS ist nicht verfügbar
|
||||
screen.unavailable.message=Beim Verarbeiten Ihrer Anfrage ist ein Fehler aufgetreten. Bitte informieren Sie Ihren Support oder versuchen Sie es noch einmal.
|
||||
@@ -0,0 +1,94 @@
|
||||
#Author: Joaquin Recio, Jose Luis Huertas, Juan Paulo Soto, and Alex Henrie
|
||||
|
||||
#Welcome Screen Messages
|
||||
|
||||
|
||||
screen.welcome.welcome=¡Felicidades por iniciar CAS correctamente! Para aprender cómo autenticar, por favor repase la configuración del gestor de configuración por defecto.
|
||||
screen.welcome.security=Por razones de seguridad, ¡por favor cierre su sesión y su navegador web cuando haya terminado de acceder a los servicios que requieren autenticación!
|
||||
screen.welcome.instructions=Introduzca su nombre de usuario y contraseña.
|
||||
screen.welcome.label.netid=Nombre de <span class="accesskey">u</span>suario:
|
||||
screen.welcome.label.netid.accesskey=u
|
||||
screen.welcome.label.password=<span class="accesskey">C</span>ontraseña:
|
||||
screen.welcome.label.password.accesskey=c
|
||||
screen.welcome.label.warn=<span class="accesskey">A</span>visarme antes de abrir sesión en otros sitios.
|
||||
screen.welcome.label.warn.accesskey=a
|
||||
screen.welcome.button.login=INICIAR SESIÓN
|
||||
screen.welcome.button.clear=LIMPIAR
|
||||
|
||||
logo.title=ir a la página principal de Apereo
|
||||
copyright=Copyright © 2005–2015 Apereo, Inc. Se reservan todos los derechos.
|
||||
screen.capslock.on = ¡La tecla BLOQ MAYÚS está activada!
|
||||
|
||||
# Blocked Errors Page
|
||||
screen.blocked.header=Acceso denegado
|
||||
screen.blocked.message=Ha introducido una contraseña equivocada para el usuario demasiadas veces. Se le ha restringido.
|
||||
|
||||
#Confirmation Screen Messages
|
||||
screen.confirmation.message=Haga clic <a href="{0}">aquí</a> para ir a la aplicación.
|
||||
|
||||
#Generic Success Screen Messages
|
||||
screen.success.header=Inicio de sesión exitoso
|
||||
screen.success.success=Usted, {0}, ha iniciado con éxito su sesión en el Servicio de Autenticación Central.
|
||||
screen.success.security=Por razones de seguridad, por favor cierre su sesión y su navegador web cuando haya terminado de acceder a los servicios que requieren autenticación.
|
||||
|
||||
#Logout Screen Messages
|
||||
screen.logout.header=Cierre de sesión exitoso
|
||||
screen.logout.success=Ha cerrado con éxito su sesión del Servicio de Autenticación Central.
|
||||
screen.logout.security=Por razones de seguridad, cierre su navegador web.
|
||||
|
||||
|
||||
screen.service.sso.error.header=Reautenticación requerida para acceder a este servicio
|
||||
screen.service.sso.error.message=Intentó acceder a un servicio que requiere autenticación sin reautenticar. Por favor intente <a href="{0}">autenticar de nuevo</a>.
|
||||
|
||||
username.required=El nombre de usuario es un campo requerido.
|
||||
password.required=La contraseña es un campo requerido.
|
||||
|
||||
# Authentication failure messages
|
||||
authenticationFailure.AccountDisabledException=Se ha deshabilitado esta cuenta.
|
||||
authenticationFailure.AccountLockedException=Se ha bloqueado esta cuenta.
|
||||
authenticationFailure.CredentialExpiredException=Su contraseña ha caducado.
|
||||
authenticationFailure.InvalidLoginLocationException=No puede iniciar sesión desde esta estación de trabajo.
|
||||
authenticationFailure.InvalidLoginTimeException=Está prohibido iniciar sesión con su cuenta en este momento.
|
||||
authenticationFailure.AccountNotFoundException=Credenciales inválidas.
|
||||
authenticationFailure.FailedLoginException=Credenciales inválidas.
|
||||
authenticationFailure.UNKNOWN=Credenciales inválidas.
|
||||
|
||||
INVALID_REQUEST_PROXY=ambos de los parámetros 'pgt' y 'targetService' se requieren
|
||||
INVALID_TICKET_SPEC=El tique falló la especificación de validación. Los errores posibles pueden incluir intentar validar un tique de proxy mediante un validador de tiques de servicio, o no cumplir con la petición de renovación (renew true).
|
||||
INVALID_REQUEST=ambos de los parámetros 'service' y 'ticket' se requieren
|
||||
INVALID_TICKET=No se ha reconocido el tique ''{0}''
|
||||
INVALID_SERVICE=El tique ''{0}'' no coincide con el servicio proporcionado. El servicio original era ''{1}'' y el servicio proporcionado era ''{2}''.
|
||||
INVALID_PROXY_CALLBACK=La dirección web de retrollamada de proxy ''{0}'' no se pudo autenticar.
|
||||
UNAUTHORIZED_SERVICE_PROXY=El servicio proporcionado ''{0}'' no está autorizado a usar la autenticación de proxy CAS.
|
||||
|
||||
screen.service.error.header=Aplicación no autorizada a usar CAS
|
||||
service.not.authorized.missing.attr=No está autorizado a accedir a la aplicación porque a su cuenta \
|
||||
le faltan privilegios que el servidor CAS requiere para autenticar a este servicio. Por favor, notifique a su soporte técnico.
|
||||
screen.service.error.message=La aplicación que usted ha intentado autenticar no está autorizada a usar CAS.
|
||||
screen.service.empty.error.message=El registro de servicios del CAS está vacío y no tiene definiciones de servicio. \
|
||||
Las aplicaciones que quieren autenticar con CAS deben ser explícitamente definidas en el registro de servicios.
|
||||
|
||||
# Password policy
|
||||
password.expiration.warning=Su contraseña caduca en {0} días. Por favor <a href="{1}">cambie su contraseña</a> ahora.
|
||||
password.expiration.loginsRemaining=Tiene {0} inicios de sesión restantes antes que <strong>DEBE</strong> cambiar su contraseña.
|
||||
screen.accountdisabled.heading=Se ha deshabilitado esta cuenta.
|
||||
screen.accountdisabled.message=Por favor contacte al administrador de sistema para recobrar acceso.
|
||||
screen.accountlocked.heading=Se ha bloqueado esta cuenta.
|
||||
screen.accountlocked.message=Por favor contacte al administrador de sistema para recobrar acceso.
|
||||
screen.expiredpass.heading=Su contraseña ha caducado.
|
||||
screen.expiredpass.message=Por favor <a href="{0}">cambie su contraseña</a>.
|
||||
screen.mustchangepass.heading=Debe cambiar su contraseña.
|
||||
screen.mustchangepass.message=Por favor <a href="{0}">cambie su contraseña</a>.
|
||||
screen.badhours.heading=Está prohibido iniciar sesión con su cuenta en este momento.
|
||||
screen.badhours.message=Por favor intente más tarde.
|
||||
screen.badworkstation.heading=No puede iniciar sesión desde esta estación de trabajo.
|
||||
screen.badworkstation.message=Por favor contacte al administrador de sistema para recobrar acceso.
|
||||
|
||||
# OAuth
|
||||
screen.oauth.confirm.header=Autorización
|
||||
screen.oauth.confirm.message=¿Quiere conceder acceso a su perfil completo a "{0}"?
|
||||
screen.oauth.confirm.allow=Permitir
|
||||
|
||||
# Unavailable
|
||||
screen.unavailable.heading=CAS no está disponible
|
||||
screen.unavailable.message=Hubo un error al intentar cumplir con su petición. Por favor notifique a su soporte técnico o intente otra vez.
|
||||
@@ -0,0 +1,54 @@
|
||||
#Welcome Screen Messages
|
||||
|
||||
|
||||
screen.welcome.welcome=<span dir='rtl'>\u0645\u0648\u0641\u0642 \u0634\u062F\u06CC\u062F CAS \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062A \u0622\u0646\u0644\u0627\u06CC\u0646 \u0628\u0627\u0631\u06AF\u0630\u0627\u0631\u06CC \u06A9\u0646\u06CC\u062F! \u0645\u062F\u06CC\u0631 \u062A\u0627\u06CC\u06CC\u062F \u067E\u06CC\u0634 \u0641\u0631\u0636\u060C \u062A\u0627\u06CC\u06CC\u062F \u0645\u06CC\u06A9\u0646\u062F \u0686\u0647 \u0632\u0645\u0627\u0646\u06CC \u0646\u0627\u0645 \u06A9\u0627\u0631\u0628\u0631\u06CC \u0648 \u0631\u0645\u0632 \u0648\u0631\u0648\u062F \u0647\u0645\u062E\u0648\u0627\u0646\u06CC \u062F\u0627\u0631\u0646\u062F: \u0645\u0631\u0627\u062D\u0644 \u0631\u0627 \u0627\u062F\u0627\u0645\u0647 \u062F\u0647\u06CC\u062F \u0648 \u0627\u0645\u062A\u062D\u0627\u0646 \u06A9\u0646\u06CC\u062F.</span>
|
||||
screen.welcome.security=<span dir='rtl'>\u0628\u0647 \u062F\u0644\u0627\u06CC\u0644 \u0627\u0645\u0646\u06CC\u062A\u06CC \u0632\u0645\u0627\u0646\u06CC \u06A9\u0647 \u062F\u06CC\u06AF\u0631 \u0646\u06CC\u0627\u0632\u06CC \u0628\u0647 \u062F\u0633\u062A\u06CC\u0627\u0628\u06CC \u0628\u0647 \u0633\u0631\u0648\u06CC\u0633\u0647\u0627\u06CC\u06CC \u06A9\u0647 \u0627\u062D\u062A\u06CC\u0627\u062C \u0628\u0647 \u062A\u0627\u06CC\u06CC\u062F \u062F\u0627\u0631\u0646\u062F \u0646\u062F\u0627\u0634\u062A\u06CC\u062F\u060C \u0627\u0632 \u067E\u0627\u06CC\u06AF\u0627\u0647 \u062E\u0627\u0631\u062C \u0634\u062F\u0647 \u0645\u0631\u0648\u0631\u06AF\u0631 \u062E\u0648\u062F \u0631\u0627 \u0628\u0628\u0646\u062F\u06CC\u062F!</span>
|
||||
screen.welcome.instructions=<span dir='rtl'>\u0646\u0627\u0645 \u06A9\u0627\u0631\u0628\u0631\u06CC \u0648 \u0631\u0645\u0632 \u0648\u0631\u0648\u062F \u0631\u0627 \u0648\u0627\u0631\u062F \u06A9\u0646\u06CC\u062F</span>
|
||||
screen.welcome.label.netid=<span dir='rtl'>\u0646\u0627\u0645 \u06A9\u0627\u0631\u0628\u0631\u06CC</span>
|
||||
screen.welcome.label.netid.accesskey=
|
||||
screen.welcome.label.password=<span dir='rtl'>\u0631\u0645\u0632 \u0648\u0631\u0648\u062F</span>
|
||||
screen.welcome.label.password.accesskey=
|
||||
screen.welcome.label.warn=<span dir='rtl'>\u0642\u0628\u0644 \u0627\u0632 \u0648\u0631\u0648\u062F \u0628\u0647 \u0633\u0627\u06CC\u062A\u0647\u0627\u06CC \u062F\u06CC\u06AF\u0631 \u0628\u0647 \u0645\u0646 \u0647\u0634\u062F\u0627\u0631 \u0628\u062F\u0647</span>
|
||||
screen.welcome.label.warn.accesskey=
|
||||
screen.welcome.button.login=\u0648\u0631\u0648\u062F
|
||||
screen.welcome.button.clear=\u0627\u0646\u0635\u0631\u0627\u0641
|
||||
|
||||
logo.title=\u0628\u0647 \u0635\u0641\u062D\u0647 \u0627\u0635\u0644\u06CC Apereo \u0628\u0631\u0648
|
||||
copyright=<span dir='rtl'>\u062D\u0642 \u0646\u0634\u0631 © 2005 - 2017 Apereo, Inc. \u06A9\u0644\u06CC\u0647 \u062D\u0642\u0648\u0642 \
|
||||
\u0645\u062D\u0641\u0648\u0638 \u0627\u0633\u062A</span>
|
||||
|
||||
# Blocked Errors Page
|
||||
screen.blocked.header=<span dir='rtl'>\u062F\u0633\u062A\u0631\u0633\u06CC \u0645\u0645\u06A9\u0646 \u0646\u06CC\u0633\u062A</span>
|
||||
screen.blocked.message=<span dir='rtl'>\u0628\u0647 \u062F\u0641\u0639\u0627\u062A \u0628\u0631\u0627\u06CC \u0646\u0627\u0645 \u06A9\u0627\u0631\u0628\u0631\u06CC\u060C \u0631\u0645\u0632 \u0648\u0631\u0648\u062F \u0631\u0627 \u0627\u0634\u062A\u0628\u0627\u0647 \u0648\u0627\u0631\u062F \u06A9\u0631\u062F\u0647\u0627\u06CC\u062F. \u0627\u0632 \u0648\u0631\u0648\u062F \u0634\u0645\u0627 \u062C\u0644\u0648\u06AF\u06CC\u0631\u06CC \u0634\u062F\u0647 \u0627\u0633\u062A.</span>
|
||||
|
||||
#Confirmation Screen Messages
|
||||
screen.confirmation.message=<span dir='rtl'>\u0628\u0631\u0627\u06CC \u0648\u0631\u0648\u062F \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 </a>\u0627\u06CC\u0646\u062C\u0627<a href=\u201D{0}\u201D> \u0631\u0627 \u06A9\u0644\u06CC\u06A9 \u06A9\u0646\u06CC\u062F</span>
|
||||
|
||||
#Generic Success Screen Messages
|
||||
screen.success.header=<span dir='rtl'>\u0648\u0631\u0648\u062F \u0645\u0648\u0641\u0642\u06CC\u062A \u0622\u0645\u06CC\u0632 \u0628\u0648\u062F</span>
|
||||
screen.success.success=<span dir='rtl'>\u0628\u0627 \u0645\u0648\u0641\u0642\u06CC\u062A \u0648\u0627\u0631\u062F \u067E\u0627\u06CC\u06AF\u0627\u0647 \u062A\u0627\u06CC\u06CC\u062F \u0645\u0631\u06A9\u0632\u06CC CAS \u0634\u062F\u06CC\u062F</span>
|
||||
screen.success.security=<span dir='rtl'>\u0628\u0647 \u062F\u0644\u0627\u06CC\u0644 \u0627\u0645\u0646\u06CC\u062A\u06CC \u0632\u0645\u0627\u0646\u06CC \u06A9\u0647 \u062F\u06CC\u06AF\u0631 \u0646\u06CC\u0627\u0632\u06CC \u0628\u0647 \u062F\u0633\u062A\u06CC\u0627\u0628\u06CC \u0628\u0647 \u0633\u0631\u0648\u06CC\u0633 \u0647\u0627\u06CC\u06CC \u06A9\u0647 \u0627\u062D\u062A\u06CC\u0627\u062C \u0628\u0647 \u062A\u0627\u06CC\u06CC\u062F \u062F\u0627\u0631\u0646\u062F \u0646\u062F\u0627\u0634\u062A\u06CC\u062F\u060C \u0627\u0632 \u067E\u0627\u06CC\u06AF\u0627\u0647 \u062E\u0627\u0631\u062C \u0634\u062F\u0647 \u0645\u0631\u0648\u0631\u06AF\u0631 \u062E\u0648\u062F \u0631\u0627 \u0628\u0628\u0646\u062F\u06CC\u062F!</span>
|
||||
|
||||
#Logout Screen Messages
|
||||
screen.logout.header=<span dir='rtl'>\u062E\u0631\u0648\u062C \u0627\u0632 \u067E\u0627\u06CC\u06AF\u0627\u0647 \u0645\u0648\u0641\u0642\u06CC\u062A \u0622\u0645\u06CC\u0632 \u0628\u0648\u062F</span>
|
||||
screen.logout.success=<span dir='rtl'>\u0628\u0627 \u0645\u0648\u0641\u0642\u06CC\u062A \u0627\u0632 \u067E\u0627\u06CC\u06AF\u0627\u0647 \u062A\u0627\u06CC\u06CC\u062F \u0645\u0631\u06A9\u0632\u06CC CAS \u062E\u0627\u0631\u062C \u0634\u062F\u06CC\u062F</span>
|
||||
screen.logout.security=<span dir='rtl'>\u0628\u0631\u0627\u06CC \u062D\u0641\u0638 \u0627\u0645\u0646\u06CC\u062A \u0627\u0632 \u0645\u0631\u0648\u0631\u06AF\u0631 \u062E\u0648\u062F \u062E\u0627\u0631\u062C \u0634\u0648\u06CC\u062F</span>
|
||||
|
||||
|
||||
screen.service.sso.error.header=<span dir='rtl'>\u0628\u0631\u0627\u06CC \u062F\u0633\u062A\u0631\u0633\u06CC \u0628\u0647 \u0627\u06CC\u0646 \u0633\u0631\u0648\u06CC\u0633 \u0646\u06CC\u0627\u0632 \u0628\u0647 \u062A\u0627\u06CC\u06CC\u062F \u062F\u0648\u0628\u0627\u0631\u0647 \u062F\u0627\u0631\u06CC\u062F</span>
|
||||
screen.service.sso.error.message=<span dir='rtl'>\u0633\u0639\u06CC \u062F\u0627\u0634\u062A\u06CC\u062F \u0628\u062F\u0648\u0646 \u062A\u0627\u06CC\u06CC\u062F \u062F\u0648\u0628\u0627\u0631\u0647\u060C \u0628\u0647 \u0633\u0631\u0648\u06CC\u0633\u06CC \u062F\u0633\u062A\u0631\u0633\u06CC \u067E\u06CC\u062F\u0627 \u06A9\u0646\u06CC\u062F \u06A9\u0647 \u0646\u06CC\u0627\u0632 \u0628\u0647 \u062A\u0627\u06CC\u06CC\u062F \u062F\u0627\u0631\u062F. \u0644\u0637\u0641\u0627\u064B \u0628\u0639\u062F \u0627\u0632 </a>\u062A\u0627\u06CC\u06CC\u062F <a href=\u201D{0}\u201D> \u062F\u0648\u0628\u0627\u0631\u0647 \u0627\u0645\u062A\u062D\u0627\u0646 \u06A9\u0646\u06CC\u062F</span>
|
||||
|
||||
|
||||
username.required=\u0648\u0627\u0631\u062F \u06A9\u0631\u062F\u0646 \u0646\u0627\u0645 \u06A9\u0627\u0631\u0628\u0631\u06CC \u0627\u0644\u0632\u0627\u0645\u06CC \u0627\u0633\u062A
|
||||
password.required=\u0648\u0627\u0631\u062F \u06A9\u0631\u062F\u0646 \u0631\u0645\u0632 \u0648\u0631\u0648\u062F \u0627\u0644\u0632\u0627\u0645\u06CC \u0627\u0633\u062A
|
||||
error.authentication.credentials.bad=\u0646\u0627\u0645 \u06A9\u0627\u0631\u0628\u0631\u06CC \u0648 \u0631\u0645\u0632 \u0648\u0631\u0648\u062F \u0635\u062D\u06CC\u062D \u0646\u0645\u06CC\u0628\u0627\u0634\u062F
|
||||
error.authentication.credentials.unsupported=>CAS \u0627\u06CC\u0646 \u0646\u0627\u0645 \u06A9\u0627\u0631\u0628\u0631\u06CC \u0648 \u0631\u0645\u0632 \u0648\u0631\u0648\u062F \u0631\u0627 \u067E\u0634\u062A\u06CC\u0627\u0646\u06CC \u0646\u0645\u06CC\u06A9\u0646\u062F
|
||||
|
||||
INVALID_REQUEST_PROXY=\u067E\u0627\u0631\u0627\u0645\u062A\u0631\u0647\u0627\u06CC pgt \u0648 targetService \u0647\u0631 \u062F\u0648 \u0627\u0644\u0632\u0627\u0645\u06CC \u0647\u0633\u062A\u0646\u062F
|
||||
INVALID_TICKET_SPEC=\u0634\u0646\u0627\u0633\u0647 \u0645\u0648\u0631\u062F \u062A\u0627\u06CC\u06CC\u062F \u0642\u0631\u0627\u0631 \u0646\u06AF\u0631\u0641\u062A. \u062E\u0637\u0627\u0647\u0627\u06CC \u0645\u0645\u06A9\u0646 \u0645\u06CC\u062A\u0648\u0627\u0646\u062F \u0634\u0627\u0645\u0644 \u0633\u0639\u06CC \u062F\u0631 \u0645\u0648\u0631\u062F \u062A\u0627\u06CC\u06CC\u062F \u0642\u0631\u0627\u0631 \u062F\u0627\u062F\u0646 \u0634\u0646\u0627\u0633\u0647-\u06CC \u067E\u0631\u0627\u06A9\u0633\u06CC \u0627\u0632 \u0637\u0631\u06CC\u0642 \u0633\u06CC\u0633\u062A\u0645 \u062A\u0627\u06CC\u06CC\u062F \u06A9\u0646\u0646\u062F\u0647\u06CC \u0634\u0646\u0627\u0633\u0647\u06CC \u0633\u0631\u0648\u06CC\u0633 \u06CC\u0627 \u0647\u0645\u062E\u0648\u0627\u0646\u06CC \u0646\u062F\u0627\u0634\u062A\u0646 \u0628\u0627 \u062F\u0631\u062E\u0648\u0627\u0633\u062A \u062A\u062C\u062F\u06CC\u062F \u0634\u062F\u0647 \u0628\u0627\u0634\u062F.
|
||||
INVALID_REQUEST=\u067E\u0627\u0631\u0627\u0645\u062A\u0631\u0647\u0627\u06CC service\u0648 ticket \u0647\u0631 \u062F\u0648 \u0627\u0644\u0632\u0627\u0645\u06CC \u0647\u0633\u062A\u0646\u062F
|
||||
INVALID_TICKET=\u0634\u0646\u0627\u0633\u0647 {0} \u0634\u0646\u0627\u0633\u0627\u06CC\u06CC \u0646\u0634\u062F
|
||||
INVALID_SERVICE=\u0634\u0646\u0627\u0633\u0647 {0} \u0628\u0627 \u0633\u0631\u0648\u06CC\u0633 \u0639\u0631\u0636\u0647 \u0634\u062F\u0647 \u0647\u0645\u062E\u0648\u0627\u0646\u06CC \u0646\u062F\u0627\u0631\u062F. \u0633\u0631\u0648\u06CC\u0633 \u0627\u0635\u0644\u06CC{1} \u0648 \u0633\u0631\u0648\u06CC\u0633 \u0639\u0631\u0636\u0647 \u0634\u062F\u0647{2} \u0628\u0648\u062F\u0647 \u0627\u0633\u062A.
|
||||
|
||||
screen.service.error.header=<span dir='rtl'>\u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0631\u0627\u06CC \u0627\u0633\u062A\u0641\u0627\u062F\u0647 \u0627\u0632 CAS \u062A\u0627\u06CC\u06CC\u062F \u0646\u0634\u062F\u0647 \u0627\u0633\u062A</span>
|
||||
screen.service.error.message=<span dir='rtl'>\u0628\u0631\u0646\u0627\u0645\u0647\u0627\u06CC \u06A9\u0647 \u0633\u0639\u06CC \u062F\u0631 \u062A\u0627\u06CC\u06CC\u062F \u0622\u0646 \u062F\u0627\u0634\u062A\u06CC\u062F\u060C \u0628\u0631\u0627\u06CC \u0627\u0633\u062A\u0641\u0627\u062F\u0647 \u0627\u0632 CAS \u0645\u0639\u062A\u0628\u0631 \u0646\u06CC\u0633\u062A.</span>
|
||||
@@ -0,0 +1,353 @@
|
||||
screen.welcome.welcome=Félicitations, votre serveur est en ligne ! Pour savoir comment vous authentifier, merci de regarder la méthode d'authentification définie par défaut.
|
||||
screen.welcome.security=Pour des raisons de sécurité, veuillez vous <a href="logout">déconnecter</a> et fermer votre navigateur lorsque vous avez fini d'accéder aux services authentifiés.
|
||||
screen.welcome.instructions=Entrez votre identifiant et votre mot de passe.
|
||||
screen.welcome.label.netid=<span class="accesskey">I</span>dentifiant :
|
||||
screen.welcome.label.netid.accesskey=i
|
||||
screen.welcome.label.password=<span class="accesskey">M</span>ot de passe :
|
||||
screen.welcome.label.password.accesskey=m
|
||||
screen.welcome.label.publicstation=Je suis sur un ordinateur public.
|
||||
screen.welcome.label.warn=<span class="accesskey">P</span>révenez-moi avant d'accéder à d'autres services.
|
||||
screen.welcome.label.warn.accesskey=p
|
||||
screen.welcome.label.warnremove=Ne plus me prévenir
|
||||
screen.welcome.button.login=SE CONNECTER
|
||||
screen.welcome.button.logout=SE DECONNECTER
|
||||
screen.welcome.button.loginwip=Veuillez patienter...
|
||||
screen.welcome.button.register=S'enregistrer
|
||||
screen.welcome.button.print=Imprimer
|
||||
screen.welcome.button.clear=EFFACER
|
||||
screen.welcome.label.loginwith=Ou authentifiez-vous avec :
|
||||
|
||||
screen.cookies.disabled.title=Cookies navigateur désactivés
|
||||
screen.cookies.disabled.message=Votre navigateur ne supporte pas les cookies. L'authentification centralisée NE FONCTIONNERA PAS.
|
||||
|
||||
screen.pm.button.submit=SOUMETTRE
|
||||
screen.pm.button.cancel=ANNULER
|
||||
screen.pm.button.forgotpwd=<a href="https://pwd.example.org">Mot de passe oublié ?</a>
|
||||
screen.pm.button.resetPassword=Réinitialiser votre mot de passe
|
||||
screen.pm.reset.username=Identifiant :
|
||||
screen.pm.reset.heading=Echec de la réinitialisation du mot de passe
|
||||
screen.pm.reset.message=Votre demande de réinitialisation du mot de passe ne peut pas être traitée à l'heure actuelle
|
||||
screen.pm.reset.qstitle=Répondez aux questions de sécurité
|
||||
screen.pm.reset.qsmsg=Bienvenue <strong>{0}</strong>. Avant de pouvoir réinitialiser votre mot de passe, vous devez répondre aux questions de sécurité suivantes.
|
||||
screen.pm.reset.sentInstructions=Vous devriez bientôt recevoir un e-mail contenant les instructions à suivre pour réinitialiser votre mot de passe. Veuillez en tenir compte rapidement car leur validité pourrait être limitée dans le temps.
|
||||
screen.pm.reset.sent=Instructions de réinitialisation de mot de passe envoyées avec succès.
|
||||
screen.pm.reset.title=Réinitialiser votre mot de passe
|
||||
screen.pm.reset.instructions=Veuillez indiquer votre identifiant. Vous recevrez un e-mail avec les instructions à suivre pour réinitialiser votre mot de passe.
|
||||
|
||||
screen.aup.heading=Politique d'utilisation acceptable
|
||||
screen.aup.button.accept=ACCEPTER
|
||||
screen.aup.button.cancel=ANNULER
|
||||
|
||||
screen.consent.confirm=CONFIRMER
|
||||
screen.consent.cancel=ANNULER
|
||||
screen.consent.title=Consentement
|
||||
screen.consent.attributes=Attributs
|
||||
screen.consent.options=Options
|
||||
screen.consent.attributes.header=Les attributs suivants seront fournis à <strong>[{0}]</strong> :
|
||||
screen.consent.attributes.attribute=Attribut
|
||||
screen.consent.attributes.values=Valeur(s)
|
||||
screen.consent.attributes.data.info=Affichage de _START_ à _END_ éléments sur _TOTAL_
|
||||
screen.consent.options.header=A quelle fréquence devrais-je donner mon consentement à l'avenir ?
|
||||
screen.consent.options.always=<strong>A chaque fois</strong>
|
||||
screen.consent.options.desc.always=Afficher l''écran de consentement à chaque fois que j''accède à {0}.
|
||||
screen.consent.options.attributename=<strong>Ajout/suppression d'attribut</strong>
|
||||
screen.consent.options.desc.attributename=Afficher l''écran de consentement si un attribut est ajouté ou supprimé de la liste des attributs fournis à {0}.
|
||||
screen.consent.options.attributevalue=<strong>Ajout/suppression/modification d'attribut</strong>
|
||||
screen.consent.options.desc.attributevalue.intro=Afficher l'écran de consentement si :
|
||||
screen.consent.options.desc.attributevalue.first=Un nouvel attribut est ajouté à la liste des attributs fournis à {0}.
|
||||
screen.consent.options.desc.attributevalue.second=Un attribut est supprimé de la liste des attributs fournis à {0}.
|
||||
screen.consent.options.desc.attributevalue.third=La valeur d''un attribut fourni à {0} a changé.
|
||||
screen.consent.options.reminder.header=A quelle fréquence devrais-je être rappelé de donner mon consentement ?
|
||||
screen.consent.options.reminder.expl=Afficher l''écran de consentement, sous forme de rappel, dans le cas où la liste des attributs fournis à {0} n''a pas changé.
|
||||
screen.consent.options.timeunit.seconds=Secondes
|
||||
screen.consent.options.timeunit.minutes=Minutes
|
||||
screen.consent.options.timeunit.hours=Heures
|
||||
screen.consent.options.timeunit.days=Jours
|
||||
screen.consent.options.timeunit.weeks=Semaines
|
||||
screen.consent.options.timeunit.months=Mois
|
||||
screen.consent.options.timeunit.years=Années
|
||||
|
||||
screen.consent.review.header=Vérification du consentement
|
||||
screen.consent.review.loading=Chargement des choix de consentement ...
|
||||
screen.consent.review.noconsentdecisions=Aucune décision de consentement n'a été enregistrée vous concernant.
|
||||
screen.consent.review.success=La décision de consentement a été supprimée avec succès.
|
||||
screen.consent.review.error=Une erreur est survenue
|
||||
screen.consent.review.confirm=Supprimer la décision de consentement pour [{}] ?
|
||||
screen.consent.review.yes=Oui
|
||||
screen.consent.review.no=Non
|
||||
screen.consent.review.date=Date
|
||||
screen.consent.review.service=Service
|
||||
screen.consent.review.delete=SUPPRIMER
|
||||
screen.consent.review.createddate=Date de création :
|
||||
screen.consent.review.reminder=Rappel :
|
||||
screen.consent.review.option=Option :
|
||||
screen.consent.review.options.attributename=Ajout/suppression d'attribut
|
||||
screen.consent.review.options.attributevalue=Ajout/suppression/modification d'attribut
|
||||
screen.consent.review.options.always=A chaque fois
|
||||
screen.consent.review.options.desc.always=Afficher l'écran de consentement à chaque fois que je me connecte.
|
||||
screen.consent.review.options.desc.attributename=Afficher l'écran de consentement si un attribut est ajouté ou supprimé de la liste des attributs.
|
||||
screen.consent.review.options.desc.attributevalue=Afficher l'écran de consentement si 1) un nouvel attribut est ajouté à la liste, 2) un attribut est supprimé de la liste, 3) la valeur d'un attribut a changé.
|
||||
screen.consent.review.attributes=Attributs :
|
||||
screen.consent.review.data.search=Rechercher
|
||||
screen.consent.review.data.zerorecords=Aucune décision correspondante n'a été trouvée
|
||||
screen.consent.review.data.info=Affichage de _START_ à _END_ éléments sur _TOTAL_
|
||||
screen.consent.review.data.infofiltered=(filtré parmi _MAX_ éléments au total)
|
||||
screen.consent.review.data.infoempty=Aucune décision à afficher
|
||||
screen.consent.review.logout.success=Vous êtes déconnecté de la page de vérification du consentement. Vous pouvez vous <a href="../logout">déconnecter</a> complètement du Service Central d'Authentification et terminer votre session de connexion unique.
|
||||
|
||||
screen.nonsecure.title=Connexion non sécurisée
|
||||
screen.nonsecure.message=Vous accédez actuellement au serveur CAS via une connexion non sécurisée. L'authentification unique NE FONCTIONNERA PAS. Pour faire fonctionner l'authentification unique, vous devez vous authentifier en HTTPS.
|
||||
|
||||
screen.defaultauthn.title=Authentification statique
|
||||
screen.defaultauthn.heading=CAS est configuré pour accepter une liste statique d'utilisateurs pour l'authentification principale. Veuillez noter que ceci est UNIQUEMENT utile à des fins de démonstration. Il est recommandé d'utiliser CAS avec un serveur LDAP, JDBC, etc. à la place.
|
||||
logo.title=Aller à la page d'accueil Apereo
|
||||
copyright=Copyright © 2005–2018 Apereo, Inc.
|
||||
screen.capslock.on=La touche Verr Maj est activée !
|
||||
screen.button.continue=Continuer
|
||||
screen.post.response.message=Vous allez être redirigé vers {0}.
|
||||
|
||||
screen.interrupt.title=Interruption de l'authentification
|
||||
screen.interrupt.message=Le processus d''authentification a été interrompu. CAS n''a pas encore établi de session d''authentification centralisée pour <strong>{0}</strong>.
|
||||
|
||||
screen.mdui.infolink.text=<a href="{0}" target="_blank">Plus d''informations sur cette application</a>.
|
||||
screen.mdui.privacylink.text=<a href="{0}" target="_blank">Politique de confidentialité de cette application</a>.
|
||||
|
||||
screen.interrupt.btn.proceed=Continuer
|
||||
screen.interrupt.btn.cancel=Annuler
|
||||
|
||||
# Generic Error Pages 401, 404, 500, etc
|
||||
########################################
|
||||
screen.error.page.heading=Erreur
|
||||
screen.error.page.title.accessdenied=Erreur - Accès refusé
|
||||
screen.error.page.title.permissiondenied=Erreur - Permission refusée
|
||||
screen.error.page.title.pagenotfound=Erreur - Page introuvable
|
||||
screen.error.page.title.requestunsupported=Erreur - Requête non supportée
|
||||
screen.error.page.accessdenied=Accès refusé
|
||||
screen.error.page.permissiondenied=Vous n'avez pas la permission de consulter cette page.
|
||||
screen.error.page.requestunsupported=Le type de requête ou sa syntaxe n'est pas supporté.
|
||||
screen.error.page.loginagain=Se reconnecter
|
||||
screen.error.page.notfound=Page introuvable
|
||||
screen.error.page.doesnotexist=La page à laquelle vous tentez d'accéder n'existe pas.
|
||||
screen.error.page.authdenied=Autorisation d'accès refusée
|
||||
|
||||
# Remember-Me Authentication
|
||||
screen.rememberme.checkbox.title=Se souvenir de moi
|
||||
|
||||
# Gua
|
||||
screen.gua.confirm.message=Si vous ne reconnaissez pas cette image, ne continuez PAS.
|
||||
|
||||
# Blocked Errors Page
|
||||
screen.error.page.title.blocked=Erreur - Permission refusée
|
||||
screen.blocked.header=Accès non autorisé
|
||||
screen.blocked.message=Vous avez saisi un mauvais mot de passe trop de fois de suite. Vous avez été rejeté.
|
||||
AbstractAccessDecisionManager.accessDenied=Vous n'êtes pas autorisé à accéder à cette ressource. Contactez votre administrateur CAS pour plus d'informations.
|
||||
|
||||
#Confirmation Screen Messages
|
||||
screen.confirmation.message=Vous avez demandé à être prévenu avant de vous connecter aux applications. Veuillez continuer.
|
||||
screen.authentication.warning=Connexion réussie avec avertissement
|
||||
|
||||
#Generic Success Screen Messages
|
||||
screen.success.header=Connexion réussie
|
||||
screen.success.success=Bienvenue <strong>{0}</strong>. Vous vous êtes authentifié(e) auprès du Service Central d''Authentification. Toutefois, vous voyez \
|
||||
cette page car CAS ne connait pas votre destination finale ni comment vous y rediriger. Examinez la requête d''authentification et \
|
||||
assurez-vous qu''une application ou service cible autorisé et enregistré auprès de CAS est spécifié.
|
||||
screen.success.security=Pour des raisons de sécurité, veuillez vous <a href="logout">déconnecter</a> et fermer votre navigateur lorsque vous avez fini d'accéder aux services authentifiés.
|
||||
|
||||
#Logout Screen Messages
|
||||
screen.logout.confirm.header=Voulez-vous vous déconnecter complètement ?
|
||||
screen.logout.confirm.text=Une application vous a peut-être redirigé vers le Service Central d'Authentification \
|
||||
pour vous déconnecter complètement et détruire votre session d'authentification unique. Si vous choisissez de vous déconnecter, vous devrez à nouveau \
|
||||
fournir vos identifiants pour accéder à une application.<p><p><br>Voulez-vous continuer ?
|
||||
|
||||
screen.logout.header=Déconnexion réussie
|
||||
screen.logout.success=Vous vous êtes déconnecté(e) du Service Central d'Authentification. Vous pouvez vous <a href="login">connecter</a> à nouveau.
|
||||
screen.logout.fc.success=Vous vous êtes déconnecté(e) du Service Central d'Authentification. La déconnexion unique étant activée, \
|
||||
les applications de la liste suivante seront <strong>seulement notifiées</strong> de votre déconnexion et de la destruction de votre session. Notez \
|
||||
qu'il ne s'agit que d'une notification, pas d'une garantie. Il est de la responsabilité de chaque application d'en tenir compte et de vous déconnecter.
|
||||
screen.logout.security=Pour des raisons de sécurité, veuillez fermer votre navigateur.
|
||||
|
||||
screen.service.sso.error.header=Une nouvelle authentification est requise pour accéder à ce service.
|
||||
screen.service.sso.error.message=Vous avez tenté d''accéder à un service qui requiert une nouvelle authentification sans vous authentifier à nouveau. Veuillez <a href="{0}">vous authentifier de nouveau</a>.
|
||||
screen.service.required.message=Vous avez tenté de vous authentifier sans préciser d'application cible. Merci de vérifier votre requête et de recommencer.
|
||||
|
||||
captchaError=Echec de la validation reCAPTCHA.
|
||||
username.required=Vous devez entrer votre identifiant.
|
||||
password.required=Vous devez entrer votre mot de passe.
|
||||
|
||||
# Password Management
|
||||
confirmedPassword.required=Le mot de passe doit être confirmé.
|
||||
pm.passwordsMustMatch=Les mots de passe fournis ne correspondent pas.
|
||||
pm.passwordFailedCriteria=Le mot de passe fourni ne satisfait pas la politique de sécurité. Veuillez réessayer.
|
||||
pm.updateFailure=Le mot de passe n'a pas pu être modifié. Veuillez réessayer.
|
||||
|
||||
# Authentication failure messages
|
||||
authenticationFailure.AccountDisabledException=Votre compte a été désactivé.
|
||||
authenticationFailure.AccountLockedException=Votre compte est bloqué.
|
||||
authenticationFailure.AccountExpiredException=Votre compte a expiré et n'est pas autorisé à se connecter à l'heure actuelle.
|
||||
authenticationFailure.CredentialExpiredException=Votre mot de passe a expiré.
|
||||
authenticationFailure.InvalidLoginLocationException=Vous ne pouvez pas vous authentifier depuis cet ordinateur.
|
||||
authenticationFailure.InvalidLoginTimeException=Vous ne pouvez pas vous authentifier pendant cette période.
|
||||
authenticationFailure.AccountNotFoundException=Mauvais identifiant / mot de passe.
|
||||
authenticationFailure.FailedLoginException=Mauvais identifiant / mot de passe.
|
||||
authenticationFailure.SurrogateAuthenticationException=Vous n'êtes pas autorisé à vous faire passer pour cet utilisateur à l'heure actuelle.
|
||||
authenticationFailure.AccountPasswordMustChangeException=Votre mot de passe a expiré et doit être changé.
|
||||
authenticationFailure.UnauthorizedServiceForPrincipalException=Accès au service refusé en raison de privilèges manquants.
|
||||
authenticationFailure.UNKNOWN=Mauvais identifiant / mot de passe.
|
||||
authenticationFailure.AuthenticationException=L'identifiant / mot de passe est invalide et la tentative d'authentification a échoué.
|
||||
|
||||
INVALID_REQUEST_PROXY=La requête n'est pas formattée correctement. Assurez-vous que tous les paramètres requis sont correctement encodés et inclus.
|
||||
INVALID_TICKET_SPEC=La validation du ticket est impossible. Les raisons possibles peuvent être la validation d'un Proxy Ticket sur une URL de validation de Service Ticket, ou une mauvaise requête de type renew.
|
||||
INVALID_REQUEST=Les paramètres 'service' et 'ticket' sont tous deux nécessaires
|
||||
INVALID_TICKET=Le ticket ''{0}'' est inconnu
|
||||
INVALID_PROXY_GRANTING_TICKET=Le PGT a déjà été généré pour ce ST. Impossible de générer plus d'un PGT pour un ST donné.
|
||||
INVALID_SERVICE=Le ticket ''{0}'' ne correspond pas au service demandé. Le service original était ''{1}'' et le service demandé était ''{2}''.
|
||||
INVALID_PROXY_CALLBACK=L''url de rappel du proxy ''{0}'' n''a pu être authentifiée. Soit ''{0}'' est injoignable, soit il n''est pas autorisé à exécuter une authentification proxy.
|
||||
UNAUTHORIZED_SERVICE_PROXY=Le service utilisé ''{0}'' n''est pas autorisé à utiliser l''authentification proxy CAS.
|
||||
UNSATISFIED_AUTHN_POLICY=L'accès au service est refusé en raison d'une politique d'authentification non satisfaite.
|
||||
|
||||
screen.service.error.header=Application non autorisée à utiliser CAS
|
||||
service.not.authorized.missing.attr=Vous n'êtes pas autorisé à accéder à cette application car votre compte \
|
||||
n'a pas les privilèges requis par le seveur CAS pour accéder à ce service. Merci de contacter votre support.
|
||||
screen.service.error.message=L'application pour laquelle vous avez tenté de vous authentifier n'est pas autorisée à utiliser CAS. \
|
||||
Ceci signifie habituellement que l'application n'est pas enregistrée auprès de CAS, ou sa politique d'accès définie lors de son enregistrement \
|
||||
ne lui permet pas d'utiliser les fonctionnalités de CAS, ou bien elle est invalide et non reconnue par CAS. \
|
||||
Contactez votre administrateur CAS pour savoir comment enregistrer et intégrer votre application à CAS.
|
||||
screen.service.empty.error.message=Le registre de services CAS est vide et ne contient aucune définition de service. \
|
||||
Les applications qui souhaitent s'authentifier auprès de CAS doivent explicitement s'enregistrer dans la base des services.
|
||||
|
||||
# Surrogate Account Selection
|
||||
screen.surrogates.account.selection.header=Sélection du compte de substitution
|
||||
screen.surrogates.choose.account=Choisissez un compte
|
||||
screen.surrogates.message=<p>Voici une liste de comptes pour lesquels vous êtes autorisé à vous authentifier.</p> \
|
||||
<p>Veuillez en sélectionner un et continuer.</p>
|
||||
screen.surrogates.button.cancel=Annuler
|
||||
|
||||
|
||||
# Password policy
|
||||
password.expiration.warning=Votre mot de passe expire dans {0} jour(s). Merci de <a href="{1}">changer votre mot de passe</a> maintenant.
|
||||
password.expiration.loginsRemaining=Il vous reste {0} authentification(s) avant de <strong>DEVOIR</strong> changer votre mot de passe.
|
||||
screen.accountdisabled.heading=Ce compte a été désactivé.
|
||||
screen.accountdisabled.message=Merci de contacter votre administrateur système pour récupérer votre accès.
|
||||
screen.accountlocked.heading=Votre compte a été bloqué.
|
||||
screen.accountlocked.message=Merci de contacter votre administrateur pour le débloquer.
|
||||
screen.expiredpass.heading=Votre mot de passe a expiré.
|
||||
screen.expiredpass.message=Merci de <a href="{0}">changer votre mot de passe</a>.
|
||||
screen.mustchangepass.heading=Vous devez changer votre mot de passe.
|
||||
screen.mustchangepass.message=Merci de <a href="{0}">changer votre mot de passe</a>.
|
||||
screen.badhours.heading=Vous ne pouvez pas vous authentifier durant cette plage horaire.
|
||||
screen.badhours.message=Merci de réessayer plus tard.
|
||||
screen.authnblocked.heading=La tentative d'authentification est bloquée.
|
||||
screen.authnblocked.message=Votre tentative d'authentification n'est pas considérée comme sûre et n'est donc pas autorisée depuis cet ordinateur.
|
||||
screen.risk.authnblocked.heading=La tentative d'authentification est bloquée.
|
||||
screen.risk.authnblocked.message=Votre tentative d'authentification n'est pas considérée comme sûre et n'est donc pas autorisée depuis cet ordinateur.
|
||||
screen.badworkstation.heading=Vous ne pouvez pas vous authentifier depuis cet ordinateur.
|
||||
screen.badworkstation.message=Merci de contacter votre administrateur système pour récupérer votre accès.
|
||||
screen.button.changePassword=Changer de mot de passe
|
||||
|
||||
screen.pm.success.header=Changement de mot de passe réussi
|
||||
screen.pm.success.message=Le mot de passe de votre compte a été mis à jour avec succès.
|
||||
|
||||
screen.pm.confirmpsw=Confirmez le mot de passe :
|
||||
screen.pm.enterpsw=Entrez le mot de passe :
|
||||
|
||||
screen.pac4j.unauthz.pagetitle=Accès non autorisé
|
||||
screen.pac4j.unauthz.gotoapp=Aller à l'application
|
||||
screen.pac4j.unauthz.login=Revenir à CAS
|
||||
screen.pac4j.unauthz.heading=Accès non autorisé
|
||||
screen.pac4j.unauthz.message=Soit la requête d'authentification a été rejetée/annulée, soit le fournisseur d'authentification a rejeté l'accès en raison \
|
||||
de permissions incorrectes, etc. Vérifiez les logs pour trouver la cause réelle du problème.
|
||||
|
||||
# GAuth
|
||||
screen.authentication.gauth.register=Votre compte n'est pas enregistré. Utilisez les paramètres suivants pour enregistrer votre appareil auprès de CAS.
|
||||
screen.authentication.gauth.key=La clé secrète pour l''enregistrement est {0}
|
||||
|
||||
# OAuth
|
||||
screen.oauth.confirm.header=Autorisation
|
||||
screen.oauth.confirm.message=Voulez-vous donner accès à votre profil à "{0}" ?
|
||||
screen.oauth.confirm.allow=Autoriser
|
||||
screen.oauth.confirm.deny=Refuser
|
||||
cas.oauth.confirm.pagetitle=Approbation de l'accès
|
||||
|
||||
# OIDC
|
||||
screen.oidc.confirm.infourl=Plus d''informations sur {0}.
|
||||
screen.oidc.confirm.privacyurl=Consultez les règles de confidentialité de {0}.
|
||||
|
||||
screen.oidc.confirm.scope.profile=Ceci fournit l'accès aux informations de profil excluant adresse, e-mail et téléphone.
|
||||
screen.oidc.confirm.scope.email=Ceci fournit l'accès aux informations d'adresse e-mail.
|
||||
screen.oidc.confirm.scope.address=Ceci fournit l'accès aux informations d'adresse postale.
|
||||
screen.oidc.confirm.scope.openid=Ceci indique une requête d'accès OpenID Connect.
|
||||
screen.oidc.confirm.scope.phone=Ceci fournit l'accès aux informations de téléphone.
|
||||
screen.oidc.confirm.scope.offline_access=Ceci fournit l'accès à un refresh token utilisé pour l'accès hors ligne.
|
||||
|
||||
screen.oidc.confirm.asksinfo=Ce client demande l'accès aux informations suivantes :
|
||||
screen.oidc.confirm.dynamic=Ce client a été enregistré dynamiquement à <code>{0}</code>.
|
||||
|
||||
# Unavailable
|
||||
screen.unavailable.header=Erreur CAS
|
||||
screen.unavailable.heading=CAS n''a pas pu traiter cette requête : "{0}:{1}"
|
||||
screen.unavailable.message=Une erreur s'est produite lors du traitement de votre requête. \
|
||||
<strong>Merci de contacter votre support ou de réessayer.</strong> \
|
||||
<div>Apereo est une fondation de gouvernance de logiciel libre à but non lucratif. Le logiciel CAS est un projet sponsorisé par Apereo \
|
||||
et est librement téléchargeable et utilisable par n'importe qui. Toutefois, Apereo ne gère pas les systèmes de quiconque utilise le \
|
||||
logiciel et dans la plupart des cas n'a pas connaissance de qui l'utilise ou comment les contacter, à moins qu'il ne s'agisse de \
|
||||
membres actifs de la communauté Apereo.<br/><br/>Si vous avez des difficultés à vous connecter en utilisant CAS, \
|
||||
<strong>vous devrez contacter le support technique ou l'équipe IT de votre organisation pour obtenir une assistance</strong>. \
|
||||
<br/><br/>Nous sommes désolés de ne pouvoir vous apporter une aide plus directe.</div>
|
||||
|
||||
#####################################################################
|
||||
# Login View
|
||||
#####################################################################
|
||||
#Resources Labels
|
||||
cas.login.pagetitle=Connexion
|
||||
cas.login.resources.header=Liens vers les ressources CAS
|
||||
cas.login.resources.wiki=Documentation
|
||||
cas.login.resources.pulls=Pull Requests
|
||||
cas.login.resources.mailinglist=Listes de diffusion
|
||||
cas.login.resources.chat=Salon de discussion
|
||||
cas.login.resources.blog=Blog
|
||||
cas.login.resources.dashboard=Tableau de bord
|
||||
cas.login.resources.contribguide=Guide pour les contributeurs
|
||||
|
||||
####
|
||||
# Acceptable Usage Policy View
|
||||
#
|
||||
cas.acceptableusagepolicyview.pagetitle=Politique d'utilisation acceptable
|
||||
|
||||
####
|
||||
# Attribute Resolution View
|
||||
#
|
||||
cas.attrresolutionview.pagetitle=Résolution des attributs
|
||||
cas.attrreleaseview.pagetitle=Accès aux attributs
|
||||
cas.attrresolutionview.label.uid=Identifiant :
|
||||
cas.attrresolutionview.button.submit=SOUMETTRE
|
||||
|
||||
##
|
||||
# MFA
|
||||
##
|
||||
cas.mfa.duologin.pagetitle=Connexion DuoSecurity
|
||||
cas.mfa.googleauth.pagetitle=Google Authenticator
|
||||
cas.mfa.googleauth.label.token=Code :
|
||||
cas.mfa.azure.pagetitle=Microsoft Authenticator
|
||||
cas.mfa.radius.pagetitle=Authentification Radius
|
||||
cas.mfa.yubikey.pagetitle=Authentification YubiKey
|
||||
cas.mfa.yubikey.authenticate=Utilisez votre appareil YubiKey enregistré pour vous authentifier.
|
||||
cas.mfa.yubikey.register=Votre appareil n'est pas encore enregistré. Utilisez le formulaire suivant pour enregistrer votre appareil auprès de CAS.
|
||||
cas.mfa.yubikey.label.token=Code :
|
||||
cas.mfa.u2f.pagetitle=Authentification U2F
|
||||
cas.mfa.u2f.authentication.device=Appareil d'authentification
|
||||
cas.mfa.u2f.authentication.message=<p><strong>Veuillez appuyer sur l'appareil U2F clignotant maintenant.</strong></p><p> Vous pourrez être sollicité pour autoriser \
|
||||
le site à accéder à vos clés de sécurité. Après avoir donné votre accord, l'appareil se mettra à clignoter.</p>
|
||||
cas.mfa.u2f.register.device=Enregistrer l'appareil
|
||||
cas.mfa.u2f.register.message=<p><strong>Veuillez appuyer sur l'appareil U2F clignotant maintenant.</strong></p><p> Vous pourrez être sollicité pour autoriser \
|
||||
le site à accéder à vos clés de sécurité. Après avoir donné votre accord, l'appareil se mettra à clignoter.</p>
|
||||
cas.mfa.authy.pagetitle=Connexion Authy
|
||||
cas.mfa.swivel.pagetitle=Authentification Swivel
|
||||
cas.mfa.swivel.label.token=Code :
|
||||
cas.mfa.swivel.label.header=Authentication Swivel
|
||||
|
||||
cas.mfa.registerdevice.label.title=Enregistrer l'appareil
|
||||
cas.mfa.registerdevice.label.intro=Veuillez nommer l'appareil actuel.
|
||||
cas.mfa.registerdevice.pagetitle=Enregistrer l'appareil
|
||||
cas.mfa.registerdevice.label.name=Nom
|
||||
cas.mfa.registerdevice.button.register=Enregistrer
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
|
||||
# @author Nebojsa Topolscak <topsi at srce dot hr>
|
||||
# @author Jasmina Plavac
|
||||
# University Computing Center - Zagreb, Croatia
|
||||
# @since 3.1.1
|
||||
|
||||
#Welcome Screen Messages
|
||||
|
||||
screen.welcome.welcome=\u010cestitamo na uspje\u0161noj instalaciji CAS-a! Inicijalni autentikacijski mehanizam obavlja uspje\u0161nu autentikaciju uno\u0161enjem korisni\u010dkog imena i zaporke iste vrijednosti. Isprobajte!
|
||||
screen.welcome.security=Iz sigurnosnih razloga molimo vas da se odjavite i zatvorite web preglednik nakon \u0161to zavr\u0161ite s radom u aplikacijama koje zahtijevaju autentikaciju.
|
||||
screen.welcome.instructions=Unesite korisni\u010dko ime i zaporku.
|
||||
screen.welcome.label.netid=<span class="accesskey">K</span>orisni\u010dko ime:
|
||||
screen.welcome.label.netid.accesskey=k
|
||||
screen.welcome.label.password=<span class="accesskey">Z</span>aporka:
|
||||
screen.welcome.label.password.accesskey=z
|
||||
screen.welcome.label.warn=<span class="accesskey">U</span>pozori me prije prijave u druge aplikacije.
|
||||
screen.welcome.label.warn.accesskey=u
|
||||
screen.welcome.button.login=PRIJAVA
|
||||
screen.welcome.button.clear=PONI\u0160TI
|
||||
|
||||
#Confirmation Screen Messages
|
||||
screen.confirmation.message=Pritisnite <a href="{0}">ovdje</a> za ulaz u aplikaciju.
|
||||
|
||||
#Generic Success Screen Messages
|
||||
screen.success.header=Uspje\u0161na prijava
|
||||
screen.success.success=Uspje\u0161no ste se prijavili u Centralni autentikacijski servis.
|
||||
screen.success.security=Iz sigurnosnih razloga molimo vas da se odjavite i zatvorite web preglednik nakon \u0161to zavr\u0161ite s radom u aplikacijama koje zahtijevaju autentikaciju.
|
||||
|
||||
#Logout Screen Messages
|
||||
screen.logout.header=Uspje\u0161na odjava
|
||||
screen.logout.success=Uspje\u0161no ste se odjavili iz Centralnog autentikacijskog servisa
|
||||
screen.logout.security=Iz sigurnosnih razloga zatvorite web preglednik.
|
||||
|
||||
|
||||
screen.service.sso.error.header=Za pristup ovom servisu potrebna je ponovna autentikacija.
|
||||
screen.service.sso.error.message=Poku\u0161ali ste pristupiti servisu koji zahtijeva autentikaciju, pri \u010demu se niste ponovno autenticirali. Molimo vas poku\u0161ajte se ponovno autenticirati pritiskom <a href="{0}">ovdje</a>.
|
||||
|
||||
|
||||
username.required=Korisni\u010dko ime je obavezno polje.
|
||||
password.required=Zaporka je obavezno polje.
|
||||
error.authentication.credentials.bad=Korisni\u010dko ime i(li) zaporka nisu ispravni.
|
||||
error.authentication.credentials.unsupported=CAS ne podr\u017eava ovaj na\u010din autentikacije.
|
||||
|
||||
INVALID_REQUEST_PROXY=Parametri 'pgt' i 'targetService' su obavezni.
|
||||
INVALID_TICKET_SPEC=Ticket nije pro\u0161ao provjeru ispravnosti. Ova pogre\u0161ka mo\u017ee upu\u0107ivati na poku\u0161aj provjere ispravnosti Proxy Ticketa pomo\u0107u Service Ticket validatora ili na neudovoljavanje zahtjevu uz parametar renew=true.
|
||||
|
||||
INVALID_REQUEST=Parametri 'service' i 'ticket' su obavezni
|
||||
INVALID_TICKET=Ticket ''{0}'' nije prepoznat.
|
||||
INVALID_SERVICE=Ticket ''{0}'' ne odgovara ovom servisu. Orginalni servis bio je ''{1}'', a isporu\u010deni servis bio je ''{2}''.
|
||||
|
||||
screen.service.error.header=Aplikacija nije autorizirana za uporabu CAS-a
|
||||
screen.service.error.message=Aplikacia u koju ste se poku\u0161ali prijaviti nije autorizirana za uporabu CAS-a.
|
||||
@@ -0,0 +1,77 @@
|
||||
#Author: Roberto Cosenza http://robcos.com
|
||||
#Version: $Revision$ $Date$
|
||||
#Since: 3.0.5
|
||||
|
||||
#Welcome Screen Messages
|
||||
|
||||
|
||||
screen.welcome.welcome=Benvenuti al Central Authentication Service (CAS).
|
||||
screen.welcome.security=Per motivi di sicurezza dovresti effettuare il logout e chiudere tutte le finestre del browser quando hai finito di utilizzare servizi che necessitano autenticazione.
|
||||
screen.welcome.instructions=Inserisci login e password
|
||||
screen.welcome.label.netid=<span class="accesskey">L</span>ogin:
|
||||
screen.welcome.label.netid.accesskey=L
|
||||
screen.welcome.label.password=<span class="accesskey">P</span>assword:
|
||||
screen.welcome.label.password.accesskey=P
|
||||
screen.welcome.label.warn=<span class="accesskey">A</span>vvisami prima di autenticarmi su un altro sito
|
||||
screen.welcome.label.warn.accesskey=A
|
||||
screen.welcome.button.login=LOGIN
|
||||
screen.welcome.button.clear=ANNULLA
|
||||
|
||||
# Blocked Errors Page
|
||||
screen.blocked.header=Accesso Negato
|
||||
screen.blocked.message=� stata inserita la password sbagliata troppe volte. L'account � stato bloccato.
|
||||
|
||||
#Confirmation Screen Messages
|
||||
screen.confirmation.message=Clicca <a href="{0}">qu�</a> per accedere al servizio.
|
||||
|
||||
#Generic Success Screen Messages
|
||||
screen.success.header=Login eseguito correttamente
|
||||
screen.success.success=Hai effettuato il login al Central Authentication Service.
|
||||
screen.success.security=Per motivi di sicurezza dovresti effettuare il logout e chiudere tutte le finestre del browser quando hai finito di utilizzare servizi che necessitano autenticazione.
|
||||
|
||||
#Logout Screen Messages
|
||||
screen.logout.header=Logout effettuato con successo
|
||||
screen.logout.success=Hai correttamente effettuato il logout dal Central Authentication Service.
|
||||
screen.logout.security=Per motivi di sicurezza, si consiglia di chiudere tutte le finestre del browser.
|
||||
|
||||
|
||||
screen.service.sso.error.header=� necessario effettuare nuovamente l'autenticazione per avere l'accesso a questo servizio
|
||||
screen.service.sso.error.message=Si � tentato di accedere a un servizio che richiede di effettuare nuovamente l'autenticazione. Si prega di <a href="{0}">autenticarsi nuovamente</a>.
|
||||
|
||||
username.required=Il campo login � obbligatorio
|
||||
password.required=Il campo password � obbligatorio
|
||||
error.authentication.credentials.bad=Login o password errate
|
||||
error.authentication.credentials.unsupported=Le credenziali utilizzate non sono supportate da CAS
|
||||
|
||||
INVALID_REQUEST_PROXY=I parametri 'pgt' e 'targetService' sono entrambi obbligatori
|
||||
INVALID_TICKET_SPEC=La convalida del Ticket non ha avuto successo. Una possibile causa di errore potrebbe essere il tentativo di convalidare un Proxy Ticket via un Service Ticket validator.
|
||||
INVALID_REQUEST=I parametri 'service' e 'ticket' sono entrambi obbligatori
|
||||
INVALID_TICKET=Il ticket ''{0}'' non � stato riconosciuto
|
||||
INVALID_SERVICE=Il ticket ''{0}'' non corrisponde a nessun servizio disponibile
|
||||
|
||||
#Service Error Messages
|
||||
screen.service.error.header=Servizio non autorizzato.
|
||||
screen.service.error.message=Il servizio a cui stai cercando di accedere non � configurato per CAS
|
||||
|
||||
# LPPE Account Error
|
||||
screen.accounterror.password.message=La data di rinnovo della password non � specificata, � scaduta o non valida. Si prega di contattare l'amministratore di sistema per recuperare le credenziali di accesso.
|
||||
|
||||
# LPPE Account Disabled
|
||||
screen.accountdisabled.heading=Questo account � disabilitato.
|
||||
screen.accountdisabled.message=Si prega di contattare l'amministratore di sistema per recuperare le credenziali di accesso.
|
||||
|
||||
# LPPE Password Expired
|
||||
screen.expiredpass.heading=La vostra password � scaduta.
|
||||
screen.expiredpass.message=Si prega di <a href="{0}">cambiare la password</a>.
|
||||
|
||||
# LPPE Password Must be changed
|
||||
screen.mustchangepass.heading=La password deve essere cambiata.
|
||||
screen.mustchangepass.message=Si prega di <a href="{0}">cambiare la password</a>.
|
||||
|
||||
# LPPE Login out of authorized hours
|
||||
screen.badhours.heading=Non si � autorizzati a effettuare il login a quest'ora.
|
||||
screen.badhours.message=Si prega di riprovare pi� tardi.
|
||||
|
||||
# LPPE Login out of authorized workstations
|
||||
screen.badworkstation.heading=Non si � autorizzati a effettuare il login da questa postazione.
|
||||
screen.badworkstation.message=Si prega di conttattare l'amministratore di sistema per recuperare le credenziali d'accesso.
|
||||
@@ -0,0 +1,52 @@
|
||||
#Author: Shoji Kajita <kajita@nagoya-u.jp>
|
||||
#Version: $Revision$ $Date$
|
||||
#Since: 3.1
|
||||
|
||||
#Welcome Screen Messages
|
||||
|
||||
|
||||
screen.welcome.welcome=\u304a\u3081\u3067\u3068\u3046\u3054\u3056\u3044\u307e\u3059! CAS \u3092\u30aa\u30f3\u30e9\u30a4\u30f3\u306b\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3057\u305f\uff0e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u8a8d\u8a3c\u30cf\u30f3\u30c9\u30e9\u3067\u306f\uff0c\u30e6\u30fc\u30b6\u540d\u3068\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u540c\u3058\u3068\u304d\u306b\u8a8d\u8a3c\u3055\u308c\u307e\u3059\uff0e\u305c\u3072\uff0c\u304a\u8a66\u3057\u304f\u3060\u3055\u3044\uff0e
|
||||
screen.welcome.security=\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4e0a\u306e\u7406\u7531\u304b\u3089\uff0c\u8a8d\u8a3c\u304c\u5fc5\u8981\u306a\u30b5\u30fc\u30d3\u30b9\u306e\u30a2\u30af\u30bb\u30b9\u7d42\u4e86\u6642\u306b\u306f\uff0c\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b6\u3092\u30ed\u30b0\u30a2\u30a6\u30c8\u3057\uff0c\u7d42\u4e86\u3057\u3066\u304f\u3060\u3055\u3044\uff0e
|
||||
screen.welcome.instructions=\u30cd\u30c3\u30c8ID \u304a\u3088\u3073\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044
|
||||
screen.welcome.label.netid=\u30cd\u30c3\u30c8ID:
|
||||
screen.welcome.label.netid.accesskey=n
|
||||
screen.welcome.label.password=\u30d1\u30b9\u30ef\u30fc\u30c9:
|
||||
screen.welcome.label.password.accesskey=p
|
||||
screen.welcome.label.warn=\u4ed6\u306e\u30b5\u30a4\u30c8\u306b\u30ed\u30b0\u30a4\u30f3\u3059\u308b\u524d\u306b\u8b66\u544a\u3092\u51fa\u3059\uff0e
|
||||
screen.welcome.label.warn.accesskey=w
|
||||
screen.welcome.button.login=\u30ed\u30b0\u30a4\u30f3
|
||||
screen.welcome.button.clear=\u30af\u30ea\u30a2
|
||||
|
||||
#Confirmation Screen Messages
|
||||
screen.confirmation.message=<a href="{0}">\u3053\u3053</a>\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u79fb\u52d5\u3057\u307e\u3059\uff0e
|
||||
|
||||
#Generic Success Screen Messages
|
||||
screen.success.header=\u30ed\u30b0\u30a4\u30f3\u3057\u307e\u3057\u305f
|
||||
screen.success.success=Central Authentication Service \u306b\u30ed\u30b0\u30a4\u30f3\u3067\u304d\u307e\u3057\u305f\uff0e
|
||||
screen.success.security=\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4e0a\u306e\u7406\u7531\u304b\u3089\uff0c\u8a8d\u8a3c\u304c\u5fc5\u8981\u306a\u30b5\u30fc\u30d3\u30b9\u306e\u30a2\u30af\u30bb\u30b9\u7d42\u4e86\u6642\u306b\u306f\uff0c\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b6\u3092\u30ed\u30b0\u30a2\u30a6\u30c8\u3057\uff0c\u7d42\u4e86\u3057\u3066\u304f\u3060\u3055\u3044\uff0e
|
||||
|
||||
#Logout Screen Messages
|
||||
screen.logout.header=\u30ed\u30b0\u30a2\u30a6\u30c8\u3057\u307e\u3057\u305f
|
||||
screen.logout.success=Central Authentication Service \u3092\u30ed\u30b0\u30a2\u30a6\u30c8\u3067\u304d\u307e\u3057\u305f\uff0e
|
||||
screen.logout.security=\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4e0a\u306e\u7406\u7531\u304b\u3089\uff0c\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b6\u3092\u7d42\u4e86\u3057\u3066\u304f\u3060\u3055\u3044\uff0e
|
||||
|
||||
|
||||
#Service Error Messages
|
||||
screen.service.error.header=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306f CAS \u3092\u4f7f\u3046\u6a29\u9650\u304c\u3042\u308a\u307e\u305b\u3093
|
||||
screen.service.error.message=\u8a8d\u8a3c\u3057\u3088\u3046\u3068\u3057\u305f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306f CAS \u3092\u4f7f\u3046\u6a29\u9650\u304c\u3042\u308a\u307e\u305b\u3093\uff0e
|
||||
|
||||
screen.service.sso.error.header=\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306b\u306f\u518d\u8a8d\u8a3c\u304c\u5fc5\u8981
|
||||
screen.service.sso.error.message=\u518d\u8a8d\u8a3c\u3092\u8981\u6c42\u3059\u308b\u30b5\u30fc\u30d3\u30b9\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\uff0e<a href="{0}">\u518d\u8a8d\u8a3c</a>\u3092\u8a66\u307f\u3066\u304f\u3060\u3055\u3044\uff0e
|
||||
|
||||
|
||||
username.required=\u30e6\u30fc\u30b6\u540d\u306f\u5fc5\u9808\u30d5\u30a3\u30fc\u30eb\u30c9\u3067\u3059\uff0e
|
||||
password.required=\u30d1\u30b9\u30ef\u30fc\u30c9\u306f\u5fc5\u9808\u30d5\u30a3\u30fc\u30eb\u30c9\u3067\u3059\uff0e
|
||||
error.authentication.credentials.bad=\u3042\u306a\u305f\u304c\u5165\u529b\u3057\u305f\u8a8d\u8a3c\u60c5\u5831\u306f\uff0c\u8a8d\u8a3c\u53ef\u80fd\u306a\u3082\u306e\u3067\u3042\u308b\u3053\u3068\u304c\u78ba\u8a8d\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\uff0e
|
||||
error.authentication.credentials.unsupported=\u5165\u529b\u3057\u305f\u8a8d\u8a3c\u60c5\u5831\u306f CAS \u3067\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\uff0e
|
||||
|
||||
INVALID_REQUEST_PROXY=\u300cpgt\u300d\u304a\u3088\u3073\u300ctargetService\u300d\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u4e21\u65b9\u304c\u5fc5\u8981\u3067\u3059
|
||||
INVALID_TICKET_SPEC=\u30c1\u30b1\u30c3\u30c8\u306e\u6b63\u5f53\u6027\u57fa\u6e96\u30c1\u30a7\u30c3\u30af\u306b\u5931\u6557\u3057\u307e\u3057\u305f\uff0e\u300c\u30b5\u30fc\u30d3\u30b9\u30c1\u30b1\u30c3\u30c8\u300d\u30d0\u30ea\u30c7\u30fc\u30bf\u306b\u3088\u308b\u300c\u30d7\u30ed\u30af\u30b7\u30c1\u30b1\u30c3\u30c8\u300d\u306e\u6b63\u5f53\u6027\u30c1\u30a7\u30c3\u30af\u3092\u884c\u3063\u305f\u304b\uff0c\u66f4\u65b0\u8981\u6c42\u306e\u898f\u683c\u306b\u3042\u3063\u3066\u3044\u306a\u3044\u30b1\u30fc\u30b9\u304c\u8003\u3048\u3089\u308c\u307e\u3059\uff0e
|
||||
INVALID_REQUEST=\u300cservice\u300d\u304a\u3088\u3073\u300cticket\u300d\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u4e21\u65b9\u304c\u5fc5\u8981\u3067\u3059
|
||||
INVALID_TICKET=ticket\u300c{0}\u300d\u306f\u8a8d\u8b58\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f
|
||||
INVALID_SERVICE=ticket\u300c{0}\u300d\u306f\u63d0\u4f9b\u3055\u308c\u3066\u3044\u308b\u30b5\u30fc\u30d3\u30b9\u306b\u4e00\u81f4\u3057\u307e\u305b\u3093
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
|
||||
# @author \u0412\u0430\u043d\u0433\u0435\u043b \u0410\u0458\u0430\u043d\u043e\u0432\u0441\u043a\u0438 <ajan at ii edu mk>
|
||||
# \u0418\u043d\u0441\u0442\u0438\u0442\u0443\u0442 \u0437\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u043a\u0430
|
||||
# @since 3.1.1
|
||||
|
||||
#Welcome Screen Messages
|
||||
screen.welcome.welcome=\u0414\u043e\u0431\u0440\u043e\u0434\u043e\u0458\u0434\u043e\u0432\u0442\u0435
|
||||
screen.welcome.security=\u041f\u043e\u0440\u0430\u0434\u0438 \u0441\u0438\u0433\u0443\u0440\u043d\u043e\u0441\u043d\u0438 \u043f\u0440\u0438\u0447\u0438\u043d\u0438 \u0432\u0435 \u043c\u043e\u043b\u0438\u043c\u0435 \u0434\u0430 \u043d\u0435 \u0437\u0430\u0431\u043e\u0440\u0430\u0432\u0438\u0442\u0435 \u0434\u0430 \u0441\u0435 \u043e\u0434\u0458\u0430\u0432\u0438\u0442\u0435 \u0438 \u0434\u0430 \u0433\u043e \u0437\u0430\u0442\u0432\u043e\u0440\u0438\u0442\u0435 \u0432\u0430\u0448\u0438\u043e\u0442 \u043f\u0440\u0435\u0431\u0430\u0440\u0443\u0432\u0430\u0447 \u043f\u043e \u0437\u0430\u0432\u0440\u0448\u0443\u0432\u0430\u045a\u0435\u0442\u043e \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u0430 \u0441\u043e \u0430\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438\u0442\u0435.
|
||||
screen.welcome.instructions=\u0412\u043d\u0435\u0441\u0435\u0442\u0435 \u043a\u043e\u0440\u0438\u0441\u043d\u0438\u0447\u043a\u043e \u0438\u043c\u0435 \u0438 \u043b\u043e\u0437\u0438\u043d\u043a\u0430.
|
||||
screen.welcome.label.netid=<span class="accesskey">\u041a</span>\u043e\u0440\u0438\u0441\u043d\u0438\u0447\u043a\u043e \u0438\u043c\u0435:
|
||||
screen.welcome.label.netid.accesskey=\u043a
|
||||
screen.welcome.label.password=<span class="accesskey">\u041b</span>\u043e\u0437\u0438\u043d\u043a\u0430:
|
||||
screen.welcome.label.password.accesskey=\u043b
|
||||
screen.welcome.label.warn=<span class="accesskey">\u041f</span>\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0434\u0438 \u043c\u0435 \u043f\u0440\u0438 \u043d\u0430\u0458\u0430\u0432\u0443\u0432\u0430\u045a\u0435 \u0432\u043e \u0434\u0440\u0443\u0433\u0438 \u0430\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438.
|
||||
screen.welcome.label.warn.accesskey=\u043f
|
||||
screen.welcome.button.login=\u041d\u0410\u0408\u0410\u0412\u0410
|
||||
screen.welcome.button.clear=\u041f\u041e\u041d\u0418\u0428\u0422\u0418
|
||||
|
||||
#Confirmation Screen Messages
|
||||
screen.confirmation.message=\u041f\u0440\u0438\u0442\u0438\u0441\u043d\u0435\u0442\u0435 <a href="{0}">\u0442\u0443\u043a\u0430</a> \u0437\u0430 \u0432\u043b\u0435\u0437 \u0432\u043e \u0430\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0458\u0430\u0442\u0430.
|
||||
|
||||
#Generic Success Screen Messages
|
||||
screen.success.header=\u0423\u0441\u043f\u0435\u0448\u043d\u0430 \u043d\u0430\u0458\u0430\u0432\u0430
|
||||
screen.success.success=\u0423\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u0435 \u043d\u0430\u0458\u0430\u0432\u0438\u0432\u0442\u0435 \u043d\u0430 \u0426\u0435\u043d\u0442\u0440\u0430\u043b\u043d\u0438\u043e\u0442 \u0410\u0432\u0442\u0435\u043d\u0442\u0438\u043a\u0430\u0446\u0438\u0441\u043a\u0438 \u0421\u0435\u0440\u0432\u0438\u0441.
|
||||
screen.success.security=\u041f\u043e\u0440\u0430\u0434\u0438 \u0441\u0438\u0433\u0443\u0440\u043d\u043e\u0441\u043d\u0438 \u043f\u0440\u0438\u0447\u0438\u043d\u0438 \u0432\u0435 \u043c\u043e\u043b\u0438\u043c\u0435 \u0434\u0430 \u0441\u0435 \u043e\u0434\u0458\u0430\u0432\u0438\u0442\u0435 \u0438 \u0434\u0430 \u0433\u043e \u0437\u0430\u0442\u0432\u043e\u0440\u0438\u0442\u0435 \u0432\u0430\u0448\u0438\u043e\u0442 browser \u043f\u043e \u0437\u0430\u0432\u0440\u0448\u0443\u0432\u0430\u045a\u0435\u0442\u043e \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u0430 \u0441\u043e \u0430\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438\u0442\u0435.
|
||||
|
||||
#Logout Screen Messages
|
||||
screen.logout.header=\u0423\u0441\u043f\u0435\u0448\u043d\u0430 \u043e\u0434\u0458\u0430\u0432\u0430
|
||||
screen.logout.success=\u0423\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u0435 \u043e\u0434\u0458\u0430\u0432\u0438\u0432\u0442\u0435 \u043e\u0434 \u0426\u0435\u043d\u0442\u0440\u0430\u043b\u043d\u0438\u043e\u0442 \u0410\u0432\u0442\u0435\u0442\u0438\u043a\u0430\u0446\u0438\u0441\u043a\u0438 \u0421\u0435\u0440\u0432\u0438\u0441.
|
||||
screen.logout.security=\u041f\u043e\u0440\u0430\u0434\u0438 \u0441\u0438\u0433\u0443\u0440\u043d\u043e\u0441\u043d\u0438 \u043f\u0440\u0438\u0447\u0438\u043d\u0438 \u0432\u0435 \u043c\u043e\u043b\u0438\u043c\u0435 \u0434\u0430 \u0433\u043e \u0437\u0430\u0442\u0432\u043e\u0440\u0438\u0442\u0435 \u0432\u0430\u0448\u0438\u043e\u0442 browser.
|
||||
|
||||
|
||||
screen.service.sso.error.header=\u0417\u0430 \u043f\u0440\u0438\u0441\u0442\u0430\u043f \u043d\u0430 \u043e\u0432\u043e\u0458 \u0441\u0435\u0440\u0432\u0438\u0441 \u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u0430 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u043a\u0430\u0446\u0438\u0458\u0430
|
||||
screen.service.sso.error.message=\u0421\u0435 \u043e\u0431\u0438\u0434\u043e\u0432\u0442\u0435 \u0434\u0430 \u043f\u0440\u0438\u0441\u0442\u0430\u043f\u0438\u0442\u0435 \u043d\u0430 \u0441\u0435\u0440\u0432\u0438\u0441 \u043a\u043e\u0458 \u043f\u043e\u0431\u0430\u0440\u0443\u0432\u0430 \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u043a\u0430\u0446\u0438\u0458\u0430, \u043f\u0440\u0438\u0442\u043e\u0430 \u043d\u0435 \u0441\u0442\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u0446\u0438\u0440\u0430\u043d\u0438. \u0412\u0435 \u043c\u043e\u043b\u0438\u043c\u0435 \u0434\u0430 \u0441\u0435 \u043e\u0431\u0438\u0434\u0435\u0442\u0435 \u0434\u0430 \u0441\u0435 \u0430\u0432\u0442\u0435\u0442\u0438\u043d\u0446\u0438\u0440\u0430\u0442\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0441\u043e \u043f\u0440\u0438\u0442\u0438\u0441\u043a\u0430\u045a\u0435 <a href="{0}&renew=true">\u0422\u0423\u041a\u0410</a>.
|
||||
|
||||
|
||||
username.required=\u041a\u043e\u0440\u0438\u0441\u043d\u0438\u0447\u043a\u043e\u0442\u043e \u0438\u043c\u0435 \u0437\u0430\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u043d\u043e \u0442\u0440\u0435\u0431\u0430 \u0434\u0430 \u0441\u0435 \u043f\u043e\u043f\u043e\u043b\u043d\u0438.
|
||||
password.required=\u041b\u043e\u0437\u0438\u043d\u043a\u0430\u0442\u0430 \u0437\u0430\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u043d\u043e \u0442\u0440\u0435\u0431\u0430 \u0434\u0430 \u0441\u0435 \u043f\u043e\u043f\u043e\u043b\u043d\u0438
|
||||
error.authentication.credentials.bad=\u041a\u043e\u0440\u0438\u0441\u043d\u0438\u0447\u043a\u043e\u0442\u043e \u0438\u043c\u0435 \u0438/\u0438\u043b\u0438 \u043b\u043e\u0437\u0438\u043d\u043a\u0430\u0442\u0430 \u043d\u0435 \u0441\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u043d\u0438.
|
||||
error.authentication.credentials.unsupported=\u0426\u0410\u0421 \u043d\u0435 \u0433\u043e \u043f\u043e\u0434\u0434\u0440\u0436\u0443\u0432\u0430 \u043e\u0432\u043e\u0458 \u043d\u0430\u0447\u0438\u043d \u043d\u0430 \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u043a\u0430\u0446\u0438\u0458\u0430.
|
||||
|
||||
INVALID_REQUEST_PROXY=\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438\u0442\u0435 'pgt' \u0438 'targetService' \u0441\u0435 \u0437\u0430\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u043d\u0438.
|
||||
INVALID_TICKET_SPEC=\u0411\u0438\u043b\u0435\u0442\u043e\u0442 \u043d\u0435 \u0458\u0430 \u043f\u043e\u043c\u0438\u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430\u0442\u0430 \u043d\u0430 \u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e\u0441\u0442. \u041e\u0432\u0430\u0430 \u0433\u0440\u0435\u0448\u043a\u0430 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0443\u043f\u0430\u0442\u0443\u0432\u0430 \u043d\u0430 \u043e\u0431\u0438\u0434 \u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e\u0441\u0442 \u043d\u0430 \u041f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a \u0411\u0438\u043b\u0435\u0442 \u0441\u043e \u043f\u043e\u043c\u043e\u0448 \u043d\u0430 \u0432\u0430\u043b\u0438\u0434\u0430\u0442\u043e\u0440 \u043d\u0430 \u0421\u0435\u0440\u0432\u0438\u0441\u0435\u043d \u0411\u0438\u043b\u0435\u0442 \u0438\u043b\u0438 \u043d\u0430 \u043d\u0435\u0437\u0430\u0434\u043e\u0432\u043e\u043b\u0443\u0432\u0430\u045a\u0435 \u043d\u0430 \u0431\u0430\u0440\u0430\u045a\u0430\u0442\u0430 \u0441\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0430\u0440\u043e\u0442 renew=true.
|
||||
|
||||
INVALID_REQUEST=\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438\u0442\u0435 'service' \u0438 'ticket' \u0441\u0435 \u0437\u0430\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u043d\u0438.
|
||||
INVALID_TICKET=\u0411\u0438\u043b\u0435\u0442\u043e\u0442 ''{0}'' \u043d\u0435 \u0435 \u043f\u0440\u0435\u043f\u043e\u0437\u043d\u0430\u0442.
|
||||
INVALID_SERVICE=\u0411\u0438\u043b\u0435\u0442\u043e\u0442 ''{0}'' \u043d\u0435 \u043e\u0434\u0433\u043e\u0432\u0430\u0440\u0430 \u043d\u0430 \u043e\u0432\u043e\u0458 \u0441\u0435\u0440\u0432\u0438\u0441. \u041e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u043d\u0438\u043e\u0442 \u0441\u0435\u0440\u0432\u0438\u0441 \u0431\u0435\u0448\u0435 ''{1}'', \u0430 \u0438\u0441\u043f\u043e\u0440\u0430\u0447\u0430\u043d\u0438\u043e\u0442 \u0441\u0435\u0440\u0432\u0438\u0441 \u0435 ''{2}''.
|
||||
|
||||
screen.service.error.header=\u0410\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0458\u0430\u0442\u0430 \u043d\u0435 \u0435 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0438\u0440\u0430\u043d\u0430 \u0437\u0430 \u043a\u043e\u0440\u0438\u0441\u0442\u0435\u045a\u0435 \u043d\u0430 \u0426\u0410\u0421
|
||||
screen.service.error.message=\u0410\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0458\u0430\u0442\u0430 \u0432\u043e \u043a\u043e\u0458\u0430 \u0441\u0435 \u043e\u0431\u0438\u0434\u0443\u0432\u0430\u0442\u0435 \u0434\u0430 \u0441\u0435 \u043d\u0430\u0458\u0430\u0432\u0438\u0442\u0435 \u043d\u0435 \u0435 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0438\u0440\u0430\u043d\u0430 \u0437\u0430 \u043a\u043e\u0440\u0438\u0441\u0442\u0435\u045a\u0435 \u043d\u0430 \u0426\u0410\u0421.
|
||||
@@ -0,0 +1,44 @@
|
||||
#Author: Jan "Velpi" Van der Velpen
|
||||
#Since 3.0.3
|
||||
|
||||
|
||||
screen.welcome.welcome=Proficiat met de succesvolle installatie van CAS! Met de standaard "authentication handler" kan je ingeloggen als de gebruikersnaam gelijk is aan het wachtwoord. Je kan het nu proberen.
|
||||
screen.welcome.security=Voor de veiligheid moet je uitloggen en je browser sluiten wanneer je geen toegang meer nodig hebt tot afgeschermde applicaties!
|
||||
screen.welcome.instructions=Om verder te gaan dien je jezelf te authenticeren.
|
||||
screen.welcome.label.netid.accesskey=g
|
||||
screen.welcome.label.netid=<span class="accesskey">G</span>ebruikersnaam:
|
||||
screen.welcome.label.password=<span class="accesskey">W</span>achtwoord:
|
||||
screen.welcome.label.password.accesskey=w
|
||||
screen.welcome.label.warn=<span class="accesskey">V</span>raag toestemming vooraleer me ingelogd door te sturen naar andere sites.
|
||||
screen.welcome.label.warn.accesskey=v
|
||||
screen.welcome.button.login=LOGIN
|
||||
screen.welcome.button.clear=CLEAR
|
||||
|
||||
#Confirmation Screen Messages
|
||||
screen.confirmation.message=<a href="{0}">Doorgaan naar de applicatie.</a>
|
||||
|
||||
#Generic Success Screen Messages
|
||||
screen.success.header=Succesvol ingelogd.
|
||||
screen.success.success=Je bent ingelogd bij de Central Authentication Service.
|
||||
screen.success.security=Voor de veiligheid moet je uitloggen en je browser sluiten wanneer je geen toegang meer nodig hebt tot afgeschermde applicaties!
|
||||
|
||||
#Logout Screen Messages
|
||||
screen.logout.header=Succesvol uitgelogd.
|
||||
screen.logout.success=Je bent nu uitgelogd bij de Central Authentication Service.
|
||||
screen.logout.security=Voor de veiligheid dien je je browser nu af te sluiten.
|
||||
|
||||
|
||||
|
||||
username.required=Gelieve een gebruikersnaam in te vullen.
|
||||
password.required=Gelieve een wachtwoord in te vullen.
|
||||
error.authentication.credentials.bad=De combinatie van gebruikersnaam en wachtwoord was niet juist.
|
||||
error.authentication.credentials.unsupported=De verstuurde identificatiegegevens worden niet ondersteund door CAS.
|
||||
|
||||
INVALID_REQUEST_PROXY='pgt' en 'targetService' zijn verplichte parameters.
|
||||
INVALID_TICKET_SPEC=Het ticket kwam niet overeen met de specificatie voor validatie. Misschien probeer je een Proxy Ticket te valideren op de Service Ticket validator, of komt "renew true" niet overeen.
|
||||
INVALID_REQUEST='service' en 'ticket' zijn verplichte parameters.
|
||||
INVALID_TICKET=ticket ''{0}'' is niet gekend.
|
||||
INVALID_SERVICE=ticket ''{0}'' komt niet overeen met de opgegeven service.
|
||||
|
||||
screen.service.error.header=Geen toegang.
|
||||
screen.service.error.message=De applicatie waarvoor je toegang vroeg heeft geen toestemming om deze CAS te gebruiken.
|
||||
@@ -0,0 +1,395 @@
|
||||
# @author Maja Gorecka-Wolniewicz <mgw at umk.pl>
|
||||
# @since 3.1.1
|
||||
# @author Andrzej Karda\u015B <andrzej.kardas at linuxpolska.pl> updated for 5.2.1
|
||||
# @since 5.2.1
|
||||
|
||||
AbstractAccessDecisionManager.accessDenied = Nie posiadasz uprawnie\u0144 aby uzyska\u0107 dost\u0119p do tego zasobu. Skontaktuj si\u0119\u00A0z administratorem aby uzyska\u0107 wi\u0119cej informacji.
|
||||
|
||||
INVALID_AUTHENTICATION_CONTEXT = Walidacja \u017C\u0105dania dla [''{0}''] nie mo\u017Ce zosta\u0107 przeprowadzona. \u017B\u0105danie jest niepe\u0142ne lub nie mo\u017Ce by\u0107 rozpoznane.
|
||||
|
||||
INVALID_PROXY_CALLBACK = Podany URL po\u015Brednika [''{0}''] nie zosta\u0142 uwierzytelniony. Nie mo\u017Cna po\u0142\u0105czy\u0107 si\u0119\u00A0z [''{0}''], lub nie jest dozwolone uwierzytelnienie z wykorzystaniem proxy.
|
||||
|
||||
INVALID_PROXY_GRANTING_TICKET = PGT zosta\u0142 wygenerowany dla tego ST. Nie mo\u017Cna przyzna\u0107 wi\u0119cej ni\u017C jednego PGT dla ST
|
||||
|
||||
INVALID_REQUEST = parametry 'service' i 'ticket' s\u0105 wymagane
|
||||
|
||||
INVALID_REQUEST_PROXY = \u017B\u0105danie jest niepoprawnie sformatowane. Upewnij si\u0119, \u017Ce wszystkie wymagane parametry s\u0105\u00A0poprawnie zakodowane i do\u0142\u0105czone.
|
||||
|
||||
INVALID_SERVICE = Bilet ''{0}'' nie nale\u017Cy do tej us\u0142ugi. Oryginalna us\u0142uga to ''{1}'', aktualna us\u0142uga to ''{2}''.
|
||||
|
||||
INVALID_TICKET = Nieznana posta\u0107 biletu ''{0}''
|
||||
|
||||
INVALID_TICKET_SPEC = Bilet niezgodny ze specyfikacj\u0105. Mo\u017Cliwe przyczyny b\u0142\u0119du to pr\u00F3ba sprawdzenia biletu po\u015Brednika za pomoc\u0105 walidatora biletu us\u0142ugi, lub brak zgodno\u015Bci z \u017C\u0105daniem odnowienia uwierzytelnienia.
|
||||
|
||||
UNAUTHORIZED_SERVICE_PROXY = Podana us\u0142uga ''{0}'' nie ma uprawnie\u0144 do korzystania z uwierzytelnienia z u\u017Cyciem po\u015Brednika CAS.
|
||||
|
||||
UNSATISFIED_AUTHN_POLICY = Dost\u0119p do us\u0142ugi zablokowany z powodu nie spe\u0142nienia wymaga\u0144 polityki uwierzytelnienia.
|
||||
|
||||
# Authentication failure messages
|
||||
authenticationFailure.AccountDisabledException = Konto zosta\u0142o wy\u0142\u0105czone.
|
||||
authenticationFailure.AccountExpiredException = To konto wygas\u0142o i nie mo\u017Cna si\u0119 na nie zalogowa\u0107.
|
||||
authenticationFailure.AccountLockedException = Konto zosta\u0142o zablokowane.
|
||||
authenticationFailure.AccountNotFoundException = Dostarczone dane uwierzytelniania nie mog\u0105 zosta\u0107 uznane za poprawne.
|
||||
authenticationFailure.AccountPasswordMustChangeException = Has\u0142o dla Twojego konta wygas\u0142o i musi zosta\u0107 zmienione.
|
||||
authenticationFailure.AuthenticationException = Dostarczone dane uwierzytelniania zosta\u0142y odrzucone lub s\u0105 niew\u0142a\u015Bciwe, uwierzytelnieine si\u0119 nie powiod\u0142o.
|
||||
authenticationFailure.CredentialExpiredException = Termin wa\u017Cno\u015Bci has\u0142a up\u0142yn\u0105\u0142.
|
||||
authenticationFailure.FailedLoginException = Dostarczone dane uwierzytelniania nie mog\u0105 zosta\u0107 uznane za poprawne.
|
||||
authenticationFailure.InvalidLoginLocationException = Nie mo\u017Cesz zalogowa\u0107 si\u0119 z tego komputera.
|
||||
authenticationFailure.InvalidLoginTimeException = Nie mo\u017Cesz zalogowa\u0107 si\u0119 w tym czasie.
|
||||
authenticationFailure.SurrogateAuthenticationException = W tej chwili nie mo\u017Cesz przej\u0105\u0107 uprawnie\u0144 wskazanego u\u017Cytkownika.
|
||||
authenticationFailure.UNKNOWN = Dostarczone dane uwierzytelniania nie mog\u0105 zosta\u0107 uznane za poprawne.
|
||||
authenticationFailure.UnauthorizedServiceForPrincipalException = Dost\u0119p do us\u0142ugi zablokowany z powodu brakuj\u0105cych uprawnie\u0144.
|
||||
|
||||
captchaError = Walidacja reCAPTACHA nie powiod\u0142a si\u0119.
|
||||
|
||||
cas.acceptableusagepolicyview.pagetitle = Widok polityki zasad u\u017Cytkowania
|
||||
cas.attrreleaseview.pagetitle = Uwalnianie atrybut\u00F3w
|
||||
cas.attrresolutionview.button.submit = ZATWIERD\u0179
|
||||
cas.attrresolutionview.label.uid = U\u017Cytkownik:
|
||||
cas.attrresolutionview.pagetitle = Rozwi\u0105zywanie atrybut\u00F3w
|
||||
cas.configmetadata.pagetitle = Metadane konfiguracyjne
|
||||
cas.dashboard.action.button.reboot = Restart
|
||||
cas.dashboard.action.button.reboot.modal.message = Serwer jest restartowany. Poczekaj kilka minut i od\u015Bwie\u017C stron\u0119.
|
||||
cas.dashboard.action.button.reboot.modal.title = Restartowanie Serwera
|
||||
cas.dashboard.action.button.refresh = Prze\u0142adowanie kontekstu aplikacji CAS
|
||||
cas.dashboard.action.button.refresh.modal.message = Serwer \u0142aduje wprowadzone zmiany. Poczekaj kilka minut i od\u015Bwie\u017C stron\u0119.
|
||||
cas.dashboard.action.button.refresh.modal.title = \u0141adowanie zmian wprowadzonych w konfiguracji Serwera CAS.
|
||||
cas.dashboard.action.button.shutdown = Zamkni\u0119cie
|
||||
cas.dashboard.action.button.shutdown.modal.message = Serwer zostanie wy\u0142\u0105czony. B\u0119dziesz zmuszony r\u0119cznie go zrestartowa\u0107.
|
||||
cas.dashboard.action.button.shutdown.modal.title = Zamykanie Serwera
|
||||
cas.dashboard.loading = \u0141adowanie
|
||||
cas.dashboard.pagetitle = Panel Administtacyjny
|
||||
cas.dashboard.section.configuration.title = Profile Konfiguracyjne
|
||||
cas.dashboard.section.dashboard.title = Panel administracyjny CAS
|
||||
cas.dashboard.section.server.functions.title = Funkcje Serwera
|
||||
cas.dashboard.tooltip.attrresolution = Pozwala administratorowi CAS na rozwi\u0105zywanie i przegl\u0105danie atrybut\u00F3w powi\u0105zanych z danym podmiotem logowania CAS. Alternatywnie, pozwala przejrze\u0107 atrybuty, kt\u00F3re mog\u0119 zosta\u0107 uwolnione do zarejestrowanej aplikacji CAS.
|
||||
cas.dashboard.tooltip.authnevents = Wy\u015Bwietla list\u0119 zdarze\u0144 uwierzytelnienia, kt\u00F3re zosta\u0142y rozpocz\u0119te
|
||||
cas.dashboard.tooltip.autoconfiguration = Wy\u015Bwietla raport autokonfiguracji pokazuj\u0105cy wszystkich kandydat\u00F3w do autokonfiguracji i pow\u00F3d, dla kt\u00F3rego autokonfiguracja zosta\u0142a lub nie zosta\u0142a zastosowana
|
||||
cas.dashboard.tooltip.beans = Wy\u015Bwietla pe\u0142n\u0105 list\u0119 wszystkich modu\u0142\u00F3w Spring (Spring Beans) w twojej aplikacji.
|
||||
cas.dashboard.tooltip.configmetadata = Wy\u015Bwietla metadane konfiguracyjne i dokumentacje dla ustawie\u0144 i w\u0142a\u015Bciwo\u015Bci serwera CAS.
|
||||
cas.dashboard.tooltip.configpanel = Konfiguracja ustawie\u0144 i w\u0142\u0105\u015Bciwo\u015Bci serwera CAS.
|
||||
cas.dashboard.tooltip.configprops = Wy\u015Bwietla uporz\u0105dkowan\u0105 list\u0119 wszystkich w\u0142a\u015Bciwo\u015Bci konfiguracyjnych
|
||||
cas.dashboard.tooltip.discovery = Wy\u015Bwietla aktualny profil serwera CAS zawieraj\u0105cy wszystkie funkcje i mo\u017Cliwo\u015Bci wspierane w tym wdro\u017Ceniu serwera.
|
||||
cas.dashboard.tooltip.dump = Dokonuje zrzutu w\u0105tku.
|
||||
cas.dashboard.tooltip.env = Wy\u015Bwiettla w\u0142a\u015Bciwo\u015Bci \u015Brodowiska kontenera Spring.
|
||||
cas.dashboard.tooltip.health = Wy\u015Bwietla informacje o stanie aplikacji (gdy aplikacja jest bezpieczna, prosty status po uzyskaniu dost\u0119pu poprzez nieuwierzytelnione po\u0142\u0105czenie lub pe\u0142ne informacje o wiadomo\u015Bciach po uwierzytelnieniu).
|
||||
cas.dashboard.tooltip.info = Wy\u015Bwietala informacje o aplikacji CAS.
|
||||
cas.dashboard.tooltip.logging = Konifuguruje mechanizm logowania CAS i zapewnia auto monitorowanie log\u00F3w.
|
||||
cas.dashboard.tooltip.mappings = Wy\u015Bwietla uporz\u0105dkowan\u0105 list\u0119 wszystkich \u015Bcie\u017Cek mapowania \u017C\u0105da\u0144.
|
||||
cas.dashboard.tooltip.metrics = Wy\u015Bwietla metryki aplikacji CAS
|
||||
cas.dashboard.tooltip.services = Wy\u015Bwietla list\u0119 zarejstrowanych us\u0142ug i aplikacji.
|
||||
cas.dashboard.tooltip.ssosessions = Wy\u015Bwietla i kontroluje aktualne sesje SSO.
|
||||
cas.dashboard.tooltip.ssostatus = Wskazuje, czy serwer CAS nadal utrzymuje aktywny status pojedynczego logowania dla tej sesji.
|
||||
cas.dashboard.tooltip.stats = Wy\u015Bwietla informacje o statystykach bilet\u00F3w oraz statystykach pami\u0119ci.
|
||||
cas.dashboard.tooltip.status = Wykonuje sprawdzenie poprawno\u015Bci pracy monitor\u00F3w skonfigurowanych w CAS i zwraca status.
|
||||
cas.dashboard.tooltip.swf = Pokazuje bie\u017C\u0105cy zbi\u00F3r stan\u00F3w Spring Webflow, akcji, przep\u0142yw\u00F3w i przej\u015B\u0107.
|
||||
cas.dashboard.tooltip.trace = Wy\u015Bwietla informacje \u015Bledzenia (domy\u015Blnie ostatnich 100 \u017C\u0105da\u0144 HTTP).
|
||||
cas.dashboard.tooltip.trusteddevs = Wy\u015Bwietla list\u0119 aktualnie zarejestrowanych i zaufanych urz\u0105dze\u0144, odnosz\u0105cych si\u0119 do wielostopniownego uwierzytelnienia.
|
||||
cas.loggingdashboard.activeloggers = Aktywne loggery
|
||||
cas.loggingdashboard.additive = Skumulowane
|
||||
cas.loggingdashboard.button.refresh = Od\u015Bwie\u017C
|
||||
cas.loggingdashboard.configuration = Konfiguracja
|
||||
cas.loggingdashboard.level = Poziom
|
||||
cas.loggingdashboard.level.all = Wszystkie
|
||||
cas.loggingdashboard.level.debug = DEBUG
|
||||
cas.loggingdashboard.level.error = ERROR
|
||||
cas.loggingdashboard.level.fatal = FATAL
|
||||
cas.loggingdashboard.level.info = INFO
|
||||
cas.loggingdashboard.level.off = OFF
|
||||
cas.loggingdashboard.level.trace = TRACE
|
||||
cas.loggingdashboard.level.warn = WARN
|
||||
cas.loggingdashboard.loading = Odczytywanie konfiguracji logowania
|
||||
cas.loggingdashboard.loading.error = B\u0142\u0105d w \u0142adowaniu konfiguracji logowania. Prosz\u0119 spr\u00F3buj ponownie.
|
||||
cas.loggingdashboard.logger = Loger
|
||||
cas.loggingdashboard.loggers = Logery
|
||||
cas.loggingdashboard.state = Stan
|
||||
cas.loggingdashboard.state.disabled = Nieaktywny
|
||||
cas.loggingdashboard.state.enabled = Aktywny
|
||||
cas.loggingdashboard.state.off = Wy\u0142\u0105czony
|
||||
cas.loggingdashboard.state.on = W\u0142\u0105czony
|
||||
cas.loggingdashboard.title = Panel logowania
|
||||
cas.loggingdashboard.warning = Modyfikacje wprowadzone do konfiguracji logowania nie s\u0105 trwa\u0142e, zostan\u0105 utracone po ponownym uruchomieniu serwera.
|
||||
cas.login.pagetitle = Logowanie
|
||||
cas.login.resources.blog = Blog
|
||||
cas.login.resources.chat = Czat
|
||||
cas.login.resources.dashboard = Panel Administracyjny
|
||||
cas.login.resources.header = Odno\u015Bniki do zasob\u00F3w CAS
|
||||
cas.login.resources.issuetracker = \u015Aledzienie problem\u00F3w
|
||||
cas.login.resources.mailinglist = Listy wysy\u0142kowe
|
||||
cas.login.resources.wiki = Dokumentacja
|
||||
cas.mfa.authy.pagetitle = Logowanie Authy
|
||||
cas.mfa.azure.pagetitle = Microsoft Authenticator
|
||||
cas.mfa.duologin.pagetitle = Logowanie DuoSecurity
|
||||
cas.mfa.googleauth.label.token = Token:
|
||||
cas.mfa.googleauth.pagetitle = Google Authenticator
|
||||
cas.mfa.radius.pagetitle = Uwierzytelnienie Radius
|
||||
cas.mfa.registerdevice.button.register = Zarejestruj
|
||||
cas.mfa.registerdevice.label.intro = Nazwij swoje urz\u0105dzenie.
|
||||
cas.mfa.registerdevice.label.name = Nazwa
|
||||
cas.mfa.registerdevice.label.title = Rejestracja urz\u0105dzenia
|
||||
cas.mfa.registerdevice.pagetitle = Rejestracja urz\u0105dzenia
|
||||
cas.mfa.swivel.label.header = Uwierzytelnieine Swivel
|
||||
cas.mfa.swivel.label.token = Token:
|
||||
cas.mfa.swivel.pagetitle = Uwierzytelnieine Swivel
|
||||
cas.mfa.u2f.pagetitle = Uwierzytelnieine U2F
|
||||
cas.mfa.yubikey.authenticate = Wykorzystaj zarejestrowane urz\u0105dzenie YubiKey do uwierzytelnienia.
|
||||
cas.mfa.yubikey.label.token = Token:
|
||||
cas.mfa.yubikey.pagetitle = Uwierzytelnieine YubiKey
|
||||
cas.mfa.yubikey.register = Twoje urz\u0105dzenie nie jest zarejestrowane. Wykorzystaj poni\u017Cszy formularz do zarejestrowania urz\u0105dzenia w systemie CAS.
|
||||
cas.oauth.confirm.pagetitle = Zatwierd\u017A dost\u0119p
|
||||
cas.sessions.ajax.error = Wyst\u0105pi\u0142 b\u0142\u0105d. Pon\u00F3w swoje \u017C\u0105danie.
|
||||
cas.ssosessions.button.refresh = Od\u015Bwie\u017C stron\u0119
|
||||
cas.ssosessions.buttons.filter.all = Wszystkie
|
||||
cas.ssosessions.buttons.filter.nonproxied = Bez po\u015Brednika
|
||||
cas.ssosessions.buttons.filter.proxied = Z po\u015Brednikiem
|
||||
cas.ssosessions.buttons.removeall = Usu\u0144 wszystkie sesje
|
||||
cas.ssosessions.loading = \u0141adowanie sesji SSO...
|
||||
cas.ssosessions.nosessionsfound = Nie znaleziono sesji.
|
||||
cas.ssosessions.report.pagetitle = Raport sesji SSO
|
||||
cas.ssosessions.report.panel.totalactiveprincipals = Wszystkie aktywne podmioty logowania
|
||||
cas.ssosessions.report.panel.totalssosessions = Wszystkie sesje SSO
|
||||
cas.ssosessions.report.panel.usagecountsessions = Licznik wykorzystania sesji
|
||||
cas.ssosessions.table.header.authenticationdate = Data uwierzytelnienia
|
||||
cas.ssosessions.table.header.principal = Podmiot
|
||||
cas.ssosessions.table.header.ticketgrantingticket = Ticket Granting Ticket
|
||||
cas.ssosessions.table.header.usagecount = Licznik wykorzystania
|
||||
cas.statistics.loading = \u0141adowanie...
|
||||
cas.statistics.pagetitle = Widok statystyk
|
||||
cas.statistics.section.serverstatistics.freememorygauge.label = Ca\u0142kowita ilo\u015B\u0107 pami\u0119ci JVM
|
||||
cas.statistics.section.serverstatistics.maxmemorygauge.label = Maksyma ilo\u015B\u0107 pami\u0119ci
|
||||
cas.statistics.section.serverstatistics.panel.serverinfo.table.property.availprocessors.label = Dost\u0119pne procesory
|
||||
cas.statistics.section.serverstatistics.panel.serverinfo.table.property.casticketsuffix.label = Suffix biletu CAS
|
||||
cas.statistics.section.serverstatistics.panel.serverinfo.table.property.free = wolne
|
||||
cas.statistics.section.serverstatistics.panel.serverinfo.table.property.label = W\u0142a\u015Bciwo\u015B\u0107
|
||||
cas.statistics.section.serverstatistics.panel.serverinfo.table.property.maxmemory.label = Makymalna pojemno\u015B\u0107 pami\u0119ci
|
||||
cas.statistics.section.serverstatistics.panel.serverinfo.table.property.memory.label = Pami\u0119\u0107
|
||||
cas.statistics.section.serverstatistics.panel.serverinfo.table.property.server.label = Serwer
|
||||
cas.statistics.section.serverstatistics.panel.serverinfo.table.property.starttime.label = Czas uruchomienie serwera
|
||||
cas.statistics.section.serverstatistics.panel.serverinfo.table.property.total = ca\u0142kowity
|
||||
cas.statistics.section.serverstatistics.panel.serverinfo.table.property.uptime.label = Czas podniesienia
|
||||
cas.statistics.section.serverstatistics.panel.serverinfo.table.value.label = Warto\u015B\u0107
|
||||
cas.statistics.section.serverstatistics.panel.serverinfo.title = Informacje na temat Serwera
|
||||
cas.statistics.section.serverstatistics.panel.uptime.title = Czas podniesienia
|
||||
cas.statistics.section.serverstatistics.title = Statystyki Serwera JVM
|
||||
cas.statistics.section.ticket.button = Wy\u015Bwietl sesje SSO
|
||||
cas.statistics.section.ticket.panel.expiredsts.title = Wygas\u0142e bilety ST
|
||||
cas.statistics.section.ticket.panel.expiredtgts.title = Wygas\u0142e bilety TGT
|
||||
cas.statistics.section.ticket.panel.unexpiredsts.title = Aktywne bilety ST
|
||||
cas.statistics.section.ticket.panel.unexpiredtgts.title = Aktywne bilety TGT
|
||||
cas.statistics.section.ticket.title = Statystyki bilet\u00F3w
|
||||
cas.viewconfig.button.refresh = Od\u015Bwie\u017C
|
||||
cas.viewconfig.errormessage = B\u0142\u0105d odczytu konfiguracji
|
||||
cas.viewconfig.loading = \u0141adowanie konfiguracji
|
||||
cas.viewconfig.pagetitle = Wy\u015Bwietl konfiguracj\u0119 CAS
|
||||
cas.viewconfig.persistence = Zmiany w konfiguracji aplikacji s\u0105 stosowane natychmiast, ale zachowane zostaj\u0105 jedynie w pami\u0119ci i tylko do czasu zrestartowania serwera CAS. Aby zachowa\u0107 zmiany tak by przetrwa\u0142y restart serwera wprowad\u017A je bezpo\u015Brednio do trwa\u0142ej konfiguracji serwera CAS.
|
||||
cas.viewconfig.table.column.key = Ustaiwenie
|
||||
cas.viewconfig.table.column.value = Warto\u015B\u0107
|
||||
|
||||
confirmedPassword.required = Has\u0142o musi zosta\u0107 potwierdzone.
|
||||
|
||||
copyright = Copyright © 2005–2017 Apereo, Inc. Wszelkie prawa zastrze\u017Cone.
|
||||
|
||||
logo.title = Id\u017A na stron\u0119 domow\u0105 Apereo
|
||||
|
||||
password.expiration.loginsRemaining = Pozosta\u0142o {0} autoryzacji zanim b\u0119dziesz <strong>MUSIA\u0141/A</strong> zmieni\u0107 has\u0142o
|
||||
# Password policy
|
||||
password.expiration.warning = Termin wa\u017Cno\u015Bci has\u0142a up\u0142ywa za {0} dni. Prosz\u0119 <a href="{0}">zmieni\u0107 has\u0142o</a>.
|
||||
password.required = Has\u0142o jest polem wymaganym.
|
||||
|
||||
pm.passwordFailedCriteria = Wprowadzone has\u0142o nie spe\u0142nia wymog\u00F3w polityki hase\u0142. Prosz\u0119 wprowadzi\u0107 has\u0142o ponownie.
|
||||
pm.passwordsMustMatch = Wprowadzone has\u0142a nie pasuj\u0105 do siebie.
|
||||
pm.updateFailure = Has\u0142o do konta nie mo\u017Ce zosta\u0107 zmienione. Spr\u00F3buj ponownie.
|
||||
|
||||
screen.accountdisabled.heading = Konto zosta\u0142o wy\u0142\u0105czone.
|
||||
screen.accountdisabled.message = Prosz\u0119 skontaktowa\u0107 si\u0119 z pomoc\u0105 techniczn\u0105 w celu uzyskania dost\u0119pu.
|
||||
screen.accountlocked.heading = Konto zosta\u0142o zablokowane.
|
||||
screen.accountlocked.message = Prosz\u0119 skontaktowa\u0107 si\u0119 z pomoc\u0105 techniczn\u0105 w celu uzyskania dost\u0119pu.
|
||||
screen.aup.button.accept = ZAAKCEPTUJ
|
||||
screen.aup.button.cancel = ANULUJ
|
||||
screen.authentication.gauth.key = Tajny klucz do rejestracji to {0}
|
||||
screen.authentication.gauth.register = Twoje konto nie jest zarejestrowane. U\u017Cyj poni\u017Cszych ustawie\u0144 aby zarejestrowa\u0107 swoje urz\u0105dzenie w systemie CAS.
|
||||
screen.authentication.warning = Udane logowanie z ostrze\u017Ceniami.
|
||||
screen.authnblocked.heading = Pr\u00F3ba logowania zosta\u0142a zablokowana.
|
||||
screen.authnblocked.message = Twoja pr\u00F3ba logowania jest niezaufana i nieautoryzowana z Twojej obecnej stacji roboczej.
|
||||
# LPPE Login out of authorized hours
|
||||
screen.badhours.heading = Nie mo\u017Cesz zalogowa\u0107 si\u0119 w tym czasie.
|
||||
screen.badhours.message = Prosz\u0119 spr\u00F3bowa\u0107 p\u00F3\u017Aniej.
|
||||
# LPPE Login out of authorized workstations
|
||||
screen.badworkstation.heading = Nie mo\u017Cesz zalogowa\u0107 si\u0119 z tego komputera.
|
||||
screen.badworkstation.message = Prosz\u0119 skontaktowa\u0107 si\u0119 z pomoc\u0105 techniczn\u0105 w celu uzyskania dost\u0119pu.
|
||||
# Blocked Errors Page
|
||||
screen.blocked.header = Dost\u0119p zabroniony
|
||||
screen.blocked.message = Wprowadzono nieprawid\u0142owe has\u0142o zbyt wiele razy. Dost\u0119p zosta\u0142 ograniczony.
|
||||
screen.button.changePassword = Zmie\u0144 has\u0142o
|
||||
screen.button.continue = Kontynuuj
|
||||
screen.capslock.on = CAPSLOCK jest w\u0142\u0105czony!
|
||||
#Confirmation Screen Messages
|
||||
screen.confirmation.message = Naci\u015Bnij <a href="{0}">tutaj</a>, by przej\u015Bc do aplikacji.
|
||||
screen.consent.attributes = Atrybuty
|
||||
screen.consent.attributes.attribute = Atrybuty
|
||||
screen.consent.attributes.data.info = Wy\u015Bwietlenie warto\u015Bci _START_ to _END_ of _TOTAL_
|
||||
screen.consent.attributes.header = Nast\u0119puj\u0105ce atrybuty zostan\u0105 uwolnione do <strong>[{0}]</strong>:
|
||||
screen.consent.attributes.values = Warto\u015B\u0107(\u015Bci)
|
||||
screen.consent.cancel = ANULUJ
|
||||
screen.consent.confirm = POTWIERD\u0179
|
||||
screen.consent.options = Opcje
|
||||
screen.consent.options.always = <strong>Zawsze</strong>
|
||||
screen.consent.options.attributename = <strong>Nazwa Atrybutu</strong>
|
||||
screen.consent.options.attributevalue = <strong>Warto\u015B\u0107 Atrybutu</strong>
|
||||
screen.consent.options.desc.always = Poka\u017C ekran zgody za ka\u017Cdym razem, gdy pr\u00F3buj\u0119 si\u0119 zalogowa\u0107 do {0}.
|
||||
screen.consent.options.desc.attributename = Poka\u017C ekran zgody, je\u015Bli atrybut zostanie dodany lub usuni\u0119ty z kolekcji atrybut\u00F3w uwolnionych dla {0}.
|
||||
screen.consent.options.desc.attributevalue.first = Nowy atrybut jest autoryzowany do uwolnienia dla {0}.
|
||||
screen.consent.options.desc.attributevalue.intro = Poka\u017C ekran zgody, je\u015Bli:
|
||||
screen.consent.options.desc.attributevalue.second = Atrybut zostanie usuni\u0119ty z wcze\u015Bniej udost\u0119pnionego zestawu atrybut\u00F3w dla {0}.
|
||||
screen.consent.options.desc.attributevalue.third = Warto\u015B\u0107 atrybutu zatwierdzonego do uwolnienia dla {0} uleg\u0142a zmianie.
|
||||
screen.consent.options.header = Jak mam ponownie uzyska\u0107 pro\u015Bb\u0119 o zgod\u0119?
|
||||
screen.consent.options.reminder.expl = Poka\u017C ekran zgody, jako przypomnienie, w przypadku, gdy nie ma zmian w zbiorze atrybut\u00F3w uwalnianych dla {0}.
|
||||
screen.consent.options.reminder.header = Jak cz\u0119sto powinienem otrzymywa\u0107 przypomnienia?
|
||||
screen.consent.options.timeunit.days = Dni
|
||||
screen.consent.options.timeunit.hours = Godziny
|
||||
screen.consent.options.timeunit.minutes = Minuty
|
||||
screen.consent.options.timeunit.months = Miesi\u0105ce
|
||||
screen.consent.options.timeunit.seconds = Sekundy
|
||||
screen.consent.options.timeunit.weeks = Tygodnie
|
||||
screen.consent.options.timeunit.years = Lata
|
||||
screen.consent.review.attributes = Atrybuty:
|
||||
screen.consent.review.confirm = Usun\u0105\u0107 decyzj\u0119 o wyra\u017Ceniu zgody dla[{}]?
|
||||
screen.consent.review.createddate = Data utworzenia:
|
||||
screen.consent.review.data.info = Wy\u015Bwietlanie warto\u015Bci _START_ to _END_ of _TOTAL_
|
||||
screen.consent.review.data.infoempty = Brak decyzji do wy\u015Bwietlenia
|
||||
screen.consent.review.data.infofiltered = (odfiltrowanie wszystkich wpsis\u00F3w _MAX_)
|
||||
screen.consent.review.data.search = Wyszukaj
|
||||
screen.consent.review.data.zerorecords = Brak odpowiadaj\u0105cych wpis\u00F3w
|
||||
screen.consent.review.date = Data
|
||||
screen.consent.review.delete = USU\u0143
|
||||
screen.consent.review.error = Wyst\u0105pi\u0142 b\u0142ad!
|
||||
screen.consent.review.header = Przejrzyj zatwierdzenia atrybut\u00F3w
|
||||
screen.consent.review.loading = \u0141adowanie decyzji o wyra\u017Ceniu zgody ...
|
||||
screen.consent.review.logout.success = Pomy\u015Blnie wylogowa\u0142e\u015B si\u0119 ze strony przegl\u0105dania decyzji dotycz\u0105cych zgody. Mo\u017Cesz ca\u0142kowicie <a href="../logout"> wylogowa\u0107 si\u0119</a> z Centralnej us\u0142ugi uwierzytelniania i zako\u0144czy\u0107 sesj\u0119 pojedynczego logowania.
|
||||
screen.consent.review.no = Nie
|
||||
screen.consent.review.noconsentdecisions = Nie zarejestrowano Twoich decyzji dotycz\u0105cych zgody.
|
||||
screen.consent.review.option = Opcje:
|
||||
screen.consent.review.options.always = Zawsze
|
||||
screen.consent.review.options.attributename = Nazwa Atrybutu
|
||||
screen.consent.review.options.attributevalue = Warto\u015B\u0107 Atrybutu
|
||||
screen.consent.review.options.desc.always = Poka\u017C ekran zgody za ka\u017Cdym razem, gdy pr\u00F3buj\u0119 si\u0119 zalogowa\u0107.
|
||||
screen.consent.review.options.desc.attributename = Poka\u017C ekran zgody, je\u015Bli atrybut zosta\u0142 dodany lub usuni\u0119ty z kolekcji uwalnianych atrybut\u00F3w.
|
||||
screen.consent.review.options.desc.attributevalue = Poka\u017C ekran zgody, je\u015Bli 1) nowy atrybut jest dopuszczony do uwolnienia, 2) atrybut zosta\u0142 usuni\u0119ty z wcze\u015Bniej uwalnianego pakietu atrybut\u00F3w, 3) zmieniono warto\u015B\u0107 atrybutu zatwierdzonego do uwolnienia.
|
||||
screen.consent.review.reminder = Przypomnienie:
|
||||
screen.consent.review.service = Us\u0142uga
|
||||
screen.consent.review.success = Decyzja zosta\u0142a pomy\u015Blnie usuni\u0119ta.
|
||||
screen.consent.review.yes = Tak
|
||||
screen.consent.title = Zgoda dla Atrybutu
|
||||
screen.cookies.disabled.message = Twoja przegl\u0105darka ma wy\u0142\u0105czone pliki cookie. Pojedyncze logowanie NIE B\u0118DZIE DZIA\u0141A\u0141O.
|
||||
screen.cookies.disabled.title = Przegl\u0105darka ma wy\u0142\u0105czone ciasteczka
|
||||
screen.defaultauthn.heading = CAS jest skonfigurowany do akceptowania statycznej listy u\u017Cytkownik\u00F3w do podstawowego uwierzytelniania. Informujemy, \u017Ce jest to u\u017Cyteczne WY\u0141\u0104CZNIE w celach demonstracyjnych. Zaleca si\u0119 zamiast tego po\u0142\u0105czenie CAS z LDAP, JDBC, lub innym ponownym mechanizmem.
|
||||
screen.defaultauthn.title = Statyczne uwierzytelnienie
|
||||
screen.error.page.accessdenied = Odmowa dost\u0119pu
|
||||
screen.error.page.authdenied = Odmowa logowania
|
||||
screen.error.page.doesnotexist = Strona, do kt\u00F3rej pr\u00F3bujesz uzyska\u0107 dost\u0119p, nie istnieje.
|
||||
screen.error.page.heading = B\u0142\u0105d
|
||||
screen.error.page.loginagain = Ponowne logowanie
|
||||
screen.error.page.notfound = Strona nie zosta\u0142a znaleziona
|
||||
screen.error.page.permissiondenied = Nie masz uprawnie\u0144, aby wy\u015Bwietli\u0107 t\u0119 stron\u0119.
|
||||
screen.error.page.requestunsupported = Typ \u017C\u0105dania lub sk\u0142adnia nie jest obs\u0142ugiwana.
|
||||
# LPPE Password Expired
|
||||
screen.expiredpass.heading = Termin wa\u017Cno\u015Bci has\u0142a up\u0142yn\u0105\u0142.
|
||||
screen.expiredpass.message = Prosz\u0119 <a href="{0}">zmieni\u0107 has\u0142o</a>.
|
||||
screen.gua.confirm.message = Je\u015Bli nie rozpoznajesz tego obrazu jako swojego, NIE kontynuuj.
|
||||
screen.interrupt.btn.cancel = Anuluj
|
||||
screen.interrupt.btn.proceed = Kontynuuj
|
||||
screen.interrupt.message = Przep\u0142yw uwierzytelniania zosta\u0142 przerwany. CAS nie utworzy\u0142 jeszcze sesji jednokrotnego logowania dla <strong> {0} </ strong>.
|
||||
screen.interrupt.title = Przerwanie logowania
|
||||
screen.logout.confirm.header = Czy chcesz si\u0119 ca\u0142kowicie wylogowa\u0107?
|
||||
screen.logout.confirm.text = Aplikacja mog\u0142a przekierowa\u0107 ci\u0119 do Us\u0142ugi Centralnego Uwierzytelniania, aby ca\u0142kowicie si\u0119 wylogowa\u0107 i zniszczy\u0107 sesj\u0119 pojedynczego logowania. Je\u015Bli zdecydujesz si\u0119 wylogowa\u0107, po pr\u00F3bie dost\u0119pu do aplikacji pojawi si\u0119 pro\u015Bba o podanie danych logowania i ponowne uwierzytelnienie. <p> <p> <br> Czy chcesz kontynuowa\u0107?
|
||||
screen.logout.fc.success = Pomy\u015Blnie wylogowa\u0142e\u015B si\u0119 z us\u0142ugi centralnego uwierzytelniania. W przypadku je\u015Bli funkcja pojedynczego wylogowania jest w\u0142\u0105czona w CAS, poni\u017Csza lista aplikacji <strong> zosta\u0142a powiadomiona </ strong>, aby wylogowa\u0107 i zniszczy\u0107 sesj\u0119 u\u017Cytkownika. Pami\u0119taj, \u017Ce to tylko powiadomienie, a nie gwarancja. Do samej aplikacji nale\u017Cy honorowanie tych powiadomie\u0144 i podj\u0119cie odpowiednich dzia\u0142a\u0144 w celu wylogowania.
|
||||
#Logout Screen Messages
|
||||
screen.logout.header = Udane wylogowanie
|
||||
screen.logout.security = Dla zachowania bezpiecze\u0144stwa zamknij przegl\u0105dark\u0119.
|
||||
screen.logout.success = Wylogowa\u0142e\u015B si\u0119 z CAS - Centralnej Us\u0142ugi Uwierzytelniania. Mo\u017Cesz <a href="login">zalogowa\u0107 si\u0119</a> ponownie.
|
||||
screen.mdui.infolink.text = <a href="{0}" target="_blank">Wi\u0119cej informacji o tej aplikacji</a>.
|
||||
screen.mdui.privacylink.text = <a href="{0}" target="_blank">O\u015Bwiadczenie o ochronie prywatno\u015Bci dla aplikacji</a>.
|
||||
# LPPE Password Must be changed
|
||||
screen.mustchangepass.heading = Musisz zmieni\u0107 has\u0142o.
|
||||
screen.mustchangepass.message = Prosz\u0119 <a href="https://changepsw.exampple.org">zmieni\u0107 has\u0142o</a>.
|
||||
screen.nonsecure.message = \u0141\u0105czysz si\u0119 do CAS niezabezpieczonym po\u0142\u0105czeniem. Pojedyncze logowanie NIE B\u0118DZIE DZIA\u0141A\u0141O. Aby pojedyncze logowanie funkcjonowa\u0142o, MUSISZ uwierzytelni\u0107 si\u0119 po HTTPS.
|
||||
screen.nonsecure.title = Po\u0142\u0105czenie niezabezpieczone
|
||||
screen.oauth.confirm.allow = Zezw\u00F3l
|
||||
screen.oauth.confirm.deny = Odm\u00F3w
|
||||
# OAuth
|
||||
screen.oauth.confirm.header = Autoryzacja
|
||||
screen.oauth.confirm.message = Czy chcesz udost\u0119pni\u0107 ca\u0142y sw\u00F3j profil "{0}"?
|
||||
screen.oidc.confirm.asksinfo = Klient jest proszony o nast\u0119puj\u0105ce informacje:
|
||||
screen.oidc.confirm.dynamic = Ten klient zosta\u0142 dynamicznie zarejestrowany w <code> {0} </ code>.
|
||||
screen.oidc.confirm.infourl = Dowiedz si\u0119 wi\u0119cej o {0}.
|
||||
screen.oidc.confirm.privacyurl = Dowiedz si\u0119 wi\u0119cej o zasadach prywatno\u015Bci {0}.
|
||||
screen.oidc.confirm.scope.address = \u017B\u0105danie dost\u0119pu do danych adresowych.
|
||||
screen.oidc.confirm.scope.email = \u017B\u0105danie dost\u0119pu do danych e-mail.
|
||||
screen.oidc.confirm.scope.offline_access = \u017B\u0105danie dost\u0119pu do tokena od\u015Bwie\u017Cania u\u017Cywanego do dost\u0119pu w trybie offline.
|
||||
screen.oidc.confirm.scope.openid = \u017B\u0105danie autoryzacji OpenID Connect.
|
||||
screen.oidc.confirm.scope.phone = \u017B\u0105danie dost\u0119pu do danych na temat telefonu.
|
||||
screen.oidc.confirm.scope.profile = \u017B\u0105danie dost\u0119pu do danych profilu z wy\u0142\u0105czeniem danych adresowych i danych e-mail.
|
||||
screen.pac4j.unauthz.gotoapp = Id\u017A do aplikacji
|
||||
screen.pac4j.unauthz.heading = Nieautoryzowany dost\u0119p
|
||||
screen.pac4j.unauthz.login = Powr\u00F3t do CAS
|
||||
screen.pac4j.unauthz.message = Albo \u017C\u0105danie uwierzytelnienia zosta\u0142o odrzucone/anulowane, albo dostawca uwierzytelnienia odm\u00F3wi\u0142 dost\u0119pu z powodu uprawnie\u0144 lub podobnej przyczyny. Przejrzyj dzienniki, aby znale\u017A\u0107 pierwotn\u0105 przyczyn\u0119 problemu.
|
||||
screen.pac4j.unauthz.pagetitle = Nieautoryzowany dost\u0119p
|
||||
screen.pm.button.cancel = ANULUJ
|
||||
screen.pm.button.forgotpwd = <a href="https://pwd.example.org">Zapomnia\u0142e\u015B has\u0142a? </a>
|
||||
screen.pm.button.resetPassword = Zresetuj swoje has\u0142o
|
||||
screen.pm.button.submit = ZATWIERD\u0179
|
||||
screen.pm.confirmpsw = Potwierd\u017A has\u0142o:
|
||||
screen.pm.enterpsw = Wprowad\u017A has\u0142o:
|
||||
screen.pm.reset.heading = Resetowanie has\u0142a nie powiod\u0142o si\u0119
|
||||
screen.pm.reset.instructions = Podaj swoj\u0105 nazw\u0119 u\u017Cytkownika. Otrzymasz wiadomo\u015B\u0107 e-mail z dalszymi instrukcjami dotycz\u0105cymi resetowania has\u0142a.
|
||||
screen.pm.reset.message = W tej chwili nie mo\u017Cemy przetworzy\u0107 \u017C\u0105dania zresetowania has\u0142a.
|
||||
screen.pm.reset.qsmsg = Witaj <strong> {0} </ strong>. Przed zresetowaniem has\u0142a musisz odpowiedzie\u0107 na nast\u0119puj\u0105ce pytania bezpiecze\u0144stwa.
|
||||
screen.pm.reset.qstitle = Odpowiedz na pytania bezpiecze\u0144stwa\n
|
||||
screen.pm.reset.sent = Instrukcje resetowania has\u0142a wys\u0142ane pomy\u015Blnie.
|
||||
screen.pm.reset.sentInstructions = Wkr\u00F3tce otrzymasz wiadomo\u015B\u0107 e-mail z instrukcjami dotycz\u0105cymi resetowania has\u0142a. Prosz\u0119 nie czekaj d\u0142ugo, poniewa\u017C instrukcje resetowania has\u0142a mog\u0105 wygasn\u0105\u0107.
|
||||
screen.pm.reset.title = Zresetuj swoje has\u0142o
|
||||
screen.pm.reset.username = U\u017Cytkownik:
|
||||
screen.pm.success.header = Zmiana has\u0142a zako\u0144czona powodzeniem
|
||||
screen.pm.success.message = Twoje has\u0142o zosta\u0142o zaktualizowane poprawnie.
|
||||
screen.post.response.message = Zostaniesz przekierowany do {0}.
|
||||
# Remember-Me Authentication
|
||||
screen.rememberme.checkbox.title = Zapami\u0119taj mnie
|
||||
screen.risk.authnblocked.heading = Pr\u00F3ba logowania zosta\u0142a zablokowana.
|
||||
screen.risk.authnblocked.message = Twoja pr\u00F3ba uwierzytelnienia jest niezaufana i nieautoryzowana z Twojej obecnej stacji roboczej.
|
||||
screen.service.empty.error.message = Rejestr us\u0142ug CAS jest pusty i nie zawiera \u017Cadnej definicji. Aplikacja, kt\u00F3re chcia\u0142yby zosta\u0107 uwierzytelnione w CAS musz\u0105 by\u0107 zarejestrowane w rejestrze us\u0142ug.
|
||||
screen.service.error.header = Brak uprawnie\u0144 do korzystania z CAS
|
||||
screen.service.error.message = Aplikacja, w kt\u00F3rej pr\u00F3bujesz si\u0119 uwierzytelni\u0107, nie jest upowa\u017Cniona do u\u017Cywania CAS. Zwykle oznacza to, \u017Ce aplikacja nie jest zarejestrowana w CAS, lub jej zasady autoryzacji zdefiniowane w jego rejestrze rejestracyjnym uniemo\u017Cliwiaj\u0105 wykorzystanie funkcji CAS lub s\u0105 nieprawid\u0142owo sformu\u0142owane i nierozpoznane przez CAS. Skontaktuj si\u0119 z administratorem CAS, aby dowiedzie\u0107 si\u0119, jak mo\u017Cesz zarejestrowa\u0107 i zintegrowa\u0107 swoj\u0105 aplikacj\u0119 z CAS.
|
||||
screen.service.required.message = Pr\u00F3bujesz uwierzytelni\u0107 si\u0119 nie podaj\u0105c aplikacji docelowej. Sprawd\u017A prosz\u0119 zapytanie i spr\u00F3buj ponownie.
|
||||
screen.service.sso.error.header = W celu dost\u0119pu do us\u0142ugi wymagane jest ponowne logowanie
|
||||
screen.service.sso.error.message = Podj\u0119to pr\u00F3b\u0119 uzyskania dost\u0119pu do us\u0142ugi wymagaj\u0105cej uwierzytelnienia bez ponownego logowania. Spr\u00F3buj zalogowa\u0107 si\u0119 ponownie</a>.
|
||||
#Generic Success Screen Messages
|
||||
screen.success.header = Udane logowanie
|
||||
screen.success.security = Dla zachowania bezpiecze\u0144stwa, gdy zako\u0144czysz korzystanie z us\u0142ug wymagaj\u0105cych uwierzytelnienia, wyloguj si\u0119 i zamknij przegl\u0105dark\u0119!
|
||||
screen.success.success = Zalogowa\u0142e\u015B si\u0119 w CAS - Centralnej Us\u0142udze Uwierzytelniania.
|
||||
screen.unavailable.header = B\u0142ad CAS
|
||||
# Unavailable
|
||||
screen.unavailable.heading = CAS nie mo\u017Ce przetworzy\u0107 tego \u017C\u0105dania: "{0}: {1}"
|
||||
screen.unavailable.message = Podczas pr\u00F3by zrealizowania \u017C\u0105dania wyst\u0105pi\u0142 b\u0142\u0105d. <strong> Poinformuj sw\u00F3j dzia\u0142 pomocy technicznej lub spr\u00F3buj ponownie. </ strong> <div> Apereo to organizacja non-profit oparta na zasadach otwartego oprogramowania. Oprogramowanie CAS jest projektem sponsorowanym przez firm\u0119 Apereo i jest dost\u0119pne do pobrania dla ka\u017Cdego. Apereo nie obs\u0142uguje jednak system\u00F3w os\u00F3b u\u017Cywaj\u0105cych oprogramowania i w wi\u0119kszo\u015Bci przypadk\u00F3w nawet nie wie, kto go u\u017Cywa i jak si\u0119 z nimi skontaktowa\u0107, chyba \u017Ce jest aktywn\u0105 cz\u0119\u015Bci\u0105 spo\u0142eczno\u015Bci Apereo.<br/></br> Je\u015Bli masz problemy z zalogowaniem si\u0119 przy u\u017Cyciu CAS, aby uzyska\u0107 pomoc <strong>musisz skontaktowa\u0107 si\u0119 z dzia\u0142em IT lub dzia\u0142em pomocy technicznej swojej organizacji</strong>.<br/><br/> Chcieliby\u015Bmy, by\u0107 bardziej pomocni.</ div>
|
||||
screen.welcome.button.clear = WYCZY\u015A\u0106
|
||||
screen.welcome.button.login = ZALOGUJ
|
||||
screen.welcome.button.loginwip = Chwileczk\u0119...
|
||||
screen.welcome.button.logout = WYLOGUJ
|
||||
screen.welcome.button.print = Drukuj
|
||||
screen.welcome.button.register = Zarejestruj
|
||||
screen.welcome.instructions = Wprowad\u017A swoj\u0105 nazw\u0119 u\u017Cytkownika i has\u0142o
|
||||
screen.welcome.label.loginwith = lub zaloguj si\u0119\u00A0wykorzystuj\u0105c:
|
||||
screen.welcome.label.netid = <span class="accesskey">I</span>dentyfikator:
|
||||
screen.welcome.label.netid.accesskey = i
|
||||
screen.welcome.label.password = <span class="accesskey">H</span>as\u0142o:
|
||||
screen.welcome.label.password.accesskey = h
|
||||
screen.welcome.label.publicstation = Pracuj\u0119 na publicznej stacji roboczej.
|
||||
screen.welcome.label.warn = <span class="accesskey">O</span>strzegaj mnie przed zalogowaniem na innych serwerach.
|
||||
screen.welcome.label.warn.accesskey = o
|
||||
screen.welcome.label.warnremove = Nie ostrzegaj mnie ponownie
|
||||
screen.welcome.security = Dla zachowania bezpiecze\u0144stwa gdy zako\u0144czysz korzystanie z us\u0142ug wymagaj\u0105cych uwierzytelnienia, <a href="logout">wyloguj si\u0119</a> i zamknij przegl\u0105dark\u0119!
|
||||
#Welcome Screen Messages
|
||||
screen.welcome.welcome = Gratulujemy, us\u0142uga CAS jest gotowa do dzia\u0142ania! Domy\u015Blny tryb uwierzytelniania akceptuje dane, w kt\u00F3rych has\u0142o jest takie samo jak nazwa u\u017Cytkownika - spr\u00F3buj!
|
||||
|
||||
service.not.authorized.missing.attr = Nie mo\u017Cesz korzysta\u0107 z aplikacji gdy\u017C Twoje konto nie ma uprawnie\u0144 wymaganych przez CAS do uwierzytelnienia w tej aplikacji. Prosz\u0119 skontaktowa\u0107 si\u0119 z pomoc\u0105 techniczn\u0105 w celu uzyskania dost\u0119pu.
|
||||
|
||||
username.required = Nazwa u\u017Cytkownika jest polem wymaganym.
|
||||
@@ -0,0 +1,46 @@
|
||||
#Welcome Screen Messages
|
||||
|
||||
|
||||
screen.welcome.welcome=Parab\u00e9ns por colocar o CAS no ar! O autenticador padr\u00e3o usa Nome de Usu\u00e1rio igual a Senha: v\u00e1 em frente e tente!
|
||||
screen.welcome.security=Por raz\u00f5es de seguran\u00e7a, por favor deslogue e feche o seu navegador quando terminar de acessar os servi\u00e7os que precisam de autentica\u00e7\u00e3o!
|
||||
screen.welcome.instructions=Entre com seu usu\u00e1rio e Senha
|
||||
screen.welcome.label.netid=<span class="accesskey">U</span>su\u00e1rio:
|
||||
screen.welcome.label.netid.accesskey=u
|
||||
screen.welcome.label.password=<span class="accesskey">S</span>enha:
|
||||
screen.welcome.label.password.accesskey=s
|
||||
screen.welcome.label.warn=<span class="accesskey">A</span>visar anter de logar em outros sites.
|
||||
screen.welcome.label.warn.accesskey=a
|
||||
screen.welcome.button.login=ENTRAR
|
||||
screen.welcome.button.clear=LIMPAR
|
||||
|
||||
#Confirmation Screen Messages
|
||||
screen.confirmation.message=Clique <a href="{0}">aqui</a> para ir para a aplica\u00e7\u00e3o.
|
||||
|
||||
#Generic Success Screen Messages
|
||||
screen.success.header=Sucesso ao se logar
|
||||
screen.success.success=Voc\u00ea se logou com sucesso no Servi\u00e7o de Autentica\u00e7\u00e3o Central.
|
||||
screen.success.security=Por raz\u00f5es de seguran\u00e7a, por favor efetue um Logout e feche seu navegador quando voc\u00ea terminar de acessar os servi\u00e7os que precisam de autentica\u00e7\u00e3o!
|
||||
|
||||
#Logout Screen Messages
|
||||
screen.logout.header=Sucesso ao se deslogar
|
||||
screen.logout.success=Voc\u00ea se deslogou com sucesso no Servi\u00e7o de Autentica\u00e7\u00e3o Central.
|
||||
screen.logout.security=Por raz\u00f5es de seguran\u00e7a, feche o seu navegador.
|
||||
|
||||
|
||||
screen.service.sso.error.header=Re-Autenti\u00e7\u00e3o Obrigat\u00f3ria para Acessar esse Servi\u00e7o
|
||||
screen.service.sso.error.message=Voc\u00ea tentou acessar um servi\u00e7o que necessita de autentica\u00e7\u00e3o sem re-autentica\u00e7\u00e3o. Por favor, tente <a href="{0}">autenticar novamente</a>.
|
||||
|
||||
|
||||
username.required=Usu\u00e1rio \u00e9 um campo obrigat\u00f3rio.
|
||||
password.required=Senha \u00e9 um campo obrigat\u00f3rio.
|
||||
error.authentication.credentials.bad=Usu\u00e1rio ou senha inv\u00e1lidos.
|
||||
error.authentication.credentials.unsupported=As credenciais fornecidas n\u00e3o n\u00e3o suportadas pelo CAS.
|
||||
|
||||
INVALID_REQUEST_PROXY='pgt' e 'targetService' s\u00e3o par\u00e2metros obrigat\u00f3rios
|
||||
INVALID_TICKET_SPEC=O Ticket falhou a valida\u00e7\u00e3o da especifica\u00e7\u00e3o. Possiveis erros incluem tentativa de validar um Proxy Ticket por meio de um validador Service Ticket, ou n\u00e3o estar de acordo com o pedido de renova\u00e7\u00e3o.
|
||||
INVALID_REQUEST='service' e 'ticket' s\u00e3o par\u00e2metros obrigat\u00f3rios
|
||||
INVALID_TICKET=ticket ''{0}'' n\u00e3o reconhecido
|
||||
INVALID_SERVICE=ticket ''{0}'' n\u00e3o casa com o servi\u00e7o fornecido. O servi\u00e7o original era ''{1}'' e o servi\u00e7o fornecido era ''{2}''.
|
||||
|
||||
screen.service.error.header=Aplica\u00e7\u00e3o n\u00e3o Autorizada a usar o CAS
|
||||
screen.service.error.message=A aplica\u00e7\u00e3o que voc\u00ea tentou autenticar n\u00e3o \u00e9 autorizada a usar o CAS.
|
||||
@@ -0,0 +1,51 @@
|
||||
#Welcome Screen Messages
|
||||
|
||||
|
||||
screen.welcome.welcome=Parab\u00e9ns! O CAS est\u00e1 agora online! O autenticador padr\u00e3o usa o nome de utilizador igual \u221a\u2020 palavra-passe: v\u00e1 em frente e experimente!
|
||||
screen.welcome.security=Por quest\u00f5es de seguran\u00e7a, por favor feche o seu browser quando terminar de aceder aos servi\u00e7os que necessitam de autentica\u00e7\u00e3o!
|
||||
screen.welcome.instructions=Insira o seu utilizador e respectiva palavra-passe
|
||||
screen.welcome.label.netid=<span class="accesskey">U</span>tilizador:
|
||||
screen.welcome.label.netid.accesskey=u
|
||||
screen.welcome.label.password=<span class="accesskey">P</span>alavra-passe:
|
||||
screen.welcome.label.password.accesskey=p
|
||||
screen.welcome.label.warn=<span class="accesskey">A</span>vise-me antes de entrar noutros sites.
|
||||
screen.welcome.label.warn.accesskey=A
|
||||
screen.welcome.button.login=ENTRAR
|
||||
screen.welcome.button.clear=LIMPAR
|
||||
|
||||
# Blocked Errors Page
|
||||
screen.blocked.header=Accesso Bloqueado
|
||||
screen.blocked.message=Inseriu a palavra-chave incorrectamente demasiadas vezes. A sua conta foi bloqueada.
|
||||
|
||||
#Confirmation Screen Messages
|
||||
screen.confirmation.message=Clique <a href="{0}">aqui</a> para ir para a aplica\u00e7\u00e3o.
|
||||
|
||||
#Generic Success Screen Messages
|
||||
screen.success.header=Sess\u00e3o iniciada com sucesso.
|
||||
screen.success.success=A sua sess\u00e3o no Servi\u00e7o de Autentica\u00e7\u00e3o Central foi iniciada com sucesso.
|
||||
screen.success.security=Por raz\u00f5es de seguran\u00e7a, por favor fa\u00e7a Logout e feche o seu browser quando terminar de aceder aos servi\u00e7os que necessitam de autentica\u00e7\u00e3o!
|
||||
|
||||
|
||||
#Logout Screen Messages
|
||||
screen.logout.header=Sess\u00e3o terminada com sucesso.
|
||||
screen.logout.success=A sua sess\u00e3o no Servi\u00e7o de Autentica\u00e7\u00e3o Central foi terminada com sucesso.
|
||||
screen.logout.security=Por raz\u00f5es de seguran\u00e7a, por favor feche o seu browser.
|
||||
|
||||
|
||||
screen.service.sso.error.header=\u221a\u00e2 necess\u221a\u00b0ria reautentica\u221a\u00df\u221a\u00a3o para aceder a este servi\u221a\u00dfo
|
||||
screen.service.sso.error.message=Voc\u221a\u2122 tentou o acesso a um servi\u221a\u00dfo que requer reautentica\u221a\u00df\u221a\u00a3o sem a efectuar. Por favor tente <a href="{0}">autenticar-se novamente</a>.
|
||||
|
||||
|
||||
username.required=Utilizador \u221a\u00a9 um campo obrigat\u221a\u2265rio.
|
||||
password.required=Palavra-passe \u221a\u00a9 um campo obrigat\u221a\u2265rio.
|
||||
error.authentication.credentials.bad=Utilizador ou palavra-passe inv\u221a\u00b0lidos.
|
||||
error.authentication.credentials.unsupported=As credenciais fornecidas n\u221a\u00a3o s\u221a\u00a3o suportadas pelo Servi\u221a\u00dfo de Autentica\u221a\u00df\u221a\u00a3o Central.
|
||||
|
||||
INVALID_REQUEST_PROXY=Os par\u221a\u00a2metros 'pgt' e 'targetService' s\u221a\u00a3o obrigat\u221a\u2265rios
|
||||
INVALID_TICKET_SPEC=O Ticket falhou a valida\u221a\u00df\u221a\u00a3o de especifica\u221a\u00df\u221a\u00a3o. Poder\u221a\u00a3o ser causas a tentativa de validar um Proxy Ticket atr\u221a\u00b0v\u221a\u00a9s de um validador Service Ticket ou n\u221a\u00a3o estar de acordo com o pedido de renova\u221a\u00df\u221a\u00a3o.
|
||||
INVALID_REQUEST=Os par\u221a\u00a2metros 'service' e 'ticket' s\u221a\u00a3o obrigat\u221a\u2265rios
|
||||
INVALID_TICKET=ticket ''{0}'' n\u221a\u00a3o reconhecido
|
||||
INVALID_SERVICE=ticket ''{0}'' n\u221a\u00a3o coincide com o servi\u221a\u00dfo fornecido. O servi\u221a\u00dfo original foi ''{1}'' e o servi\u221a\u00dfo fornecido foi ''{2}''.
|
||||
|
||||
screen.service.error.header=Aplica\u221a\u00df\u221a\u00a3o n\u221a\u00a3o autorizada a usar o Servi\u221a\u00dfo de Autentica\u221a\u00df\u221a\u00a3o Central
|
||||
screen.service.error.message=A aplica\u221a\u00df\u221a\u00a3o onde se tentou autenticar n\u221a\u00a3o est\u221a\u00b0 autorizada a usar o Servi\u221a\u00dfo de Autentica\u221a\u00df\u221a\u00a3o Central
|
||||
@@ -0,0 +1,88 @@
|
||||
#Welcome Screen Messages
|
||||
|
||||
|
||||
screen.welcome.welcome=\u041F\u043E\u0437\u0434\u0440\u0430\u0432\u043B\u044F\u0435\u043C \u0441 \u0443\u0441\u043F\u0435\u0448\u043D\u044B\u043C \u0437\u0430\u043F\u0443\u0441\u043A\u043E\u043C \u0441\u0438\u0441\u0442\u0435\u043C\u044B CAS! "Authentication handler", \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u0439 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E, \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0438\u0442 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0435 \u043F\u043E\u0434\u043B\u0438\u043D\u043D\u043E\u0441\u0442\u0438 \u0432 \u0442\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435 \u0435\u0441\u043B\u0438 \u0438\u043C\u044F \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F \u0438 \u043F\u0430\u0440\u043E\u043B\u044C \u0441\u043E\u0432\u043F\u0430\u0434\u0430\u044E\u0442: \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0441\u0438\u0441\u0442\u0435\u043C\u0443 CAS \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438.
|
||||
screen.welcome.security=\u0412 \u0446\u0435\u043B\u044F\u0445 \u043D\u0430\u0434\u0435\u0436\u043D\u043E\u0433\u043E \u0443\u0440\u043E\u0432\u043D\u044F \u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u043E\u0441\u0442\u0438, \u043F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u0432\u044B\u0439\u0434\u0438\u0442\u0435 \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043C\u044B, \u0430 \u0442\u0430\u043A\u0436\u0435 \u0437\u0430\u043A\u0440\u043E\u0439\u0442\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440, \u0437\u0430\u043A\u043E\u043D\u0447\u0438\u0432 \u0434\u043E\u0441\u0442\u0443\u043F \u043A \u0441\u0435\u0440\u0432\u0438\u0441\u0443 \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u043D\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044F \u0432 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0438 \u043F\u043E\u0434\u043B\u0438\u043D\u043D\u043E\u0441\u0442\u0438!
|
||||
screen.welcome.instructions=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043B\u043E\u0433\u0438\u043D \u0438 \u043F\u0430\u0440\u043E\u043B\u044C
|
||||
screen.welcome.label.netid=<span class="accesskey">\u041B</span>\u043E\u0433\u0438\u043D:
|
||||
screen.welcome.label.netid.accesskey=\u043B
|
||||
screen.welcome.label.password=<span class="accesskey">\u041F</span>\u0430\u0440\u043E\u043B\u044C:
|
||||
screen.welcome.label.password.accesskey=\u043F
|
||||
screen.welcome.label.warn=<span class="accesskey">\u041F</span>\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0434\u0438\u0442\u044C \u043F\u0435\u0440\u0435\u0434 \u0432\u0445\u043E\u0434\u043E\u043C \u043D\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0430\u0439\u0442\u044B.
|
||||
screen.welcome.label.warn.accesskey=\u0440
|
||||
screen.welcome.button.login=\u0412\u041E\u0419\u0422\u0418
|
||||
screen.welcome.button.clear=\u041E\u0427\u0418\u0421\u0422\u0418\u0422\u042C
|
||||
|
||||
logo.title=\u043F\u0435\u0440\u0435\u0439\u0442\u0438 \u043D\u0430 \u0434\u043E\u043C\u0430\u0448\u043D\u044E\u044E \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443 Apereo
|
||||
copyright=Copyright © 2005–2015 Apereo, Inc. \u0412\u0441\u0435 \u043F\u0440\u0430\u0432\u0430 \u0437\u0430\u0449\u0438\u0449\u0435\u043D\u044B.
|
||||
|
||||
# Blocked Errors Page
|
||||
screen.blocked.header=\u0421\u0435\u0440\u0432\u0438\u0441 \u043D\u0435 \u0438\u043C\u0435\u0435\u0442 \u043F\u0440\u0430\u0432\u0430 \u0434\u043E\u0441\u0442\u0443\u043F\u0430.
|
||||
screen.blocked.message=\u0412\u044B \u0432\u0432\u0435\u043B\u0438 \u043D\u0435 \u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u044B\u0435 \u043B\u043E\u0433\u0438\u043D \u0438\u043B\u0438 \u043F\u0430\u0440\u043E\u043B\u044C \u0441\u043B\u0438\u0448\u043A\u043E\u043C \u043C\u043D\u043E\u0433\u043E \u0440\u0430\u0437. \u0414\u043E\u0441\u0442\u0443\u043F \u043A \u0441\u0435\u0440\u0432\u0438\u0441\u0443 \u043F\u0435\u0440\u0435\u043A\u0440\u044B\u0442.
|
||||
|
||||
#Confirmation Screen Messages
|
||||
screen.confirmation.message=\u041D\u0430\u0436\u043C\u0438\u0442\u0435 <a href="{0}">\u0441\u044E\u0434\u0430</a> \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u0445\u043E\u0434\u0430 \u0432 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435.
|
||||
|
||||
#Generic Success Screen Messages
|
||||
screen.success.header=\u0412\u0445\u043E\u0434 \u0432 \u0441\u0438\u0441\u0442\u0435\u043C\u0443 \u0443\u0441\u043F\u0435\u0448\u0435\u043D.
|
||||
screen.success.success=\u0412\u044B \u0443\u0441\u043F\u0435\u0448\u043D\u043E \u0432\u043E\u0448\u043B\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043C\u0443 Central Authentication Service.
|
||||
screen.success.security=\u0412 \u0446\u0435\u043B\u044F\u0445 \u043D\u0430\u0434\u0435\u0436\u043D\u043E\u0433\u043E \u0443\u0440\u043E\u0432\u043D\u044F \u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u043E\u0441\u0442\u0438, \u043F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u0432\u044B\u0439\u0434\u0438\u0442\u0435 \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043C\u044B, \u0430 \u0442\u0430\u043A\u0436\u0435 \u0437\u0430\u043A\u0440\u043E\u0439\u0442\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440, \u0437\u0430\u043A\u043E\u043D\u0447\u0438\u0432 \u0434\u043E\u0441\u0442\u0443\u043F \u043A \u0441\u0435\u0440\u0432\u0438\u0441\u0443 \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u043D\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044F \u0432 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0438 \u043F\u043E\u0434\u043B\u0438\u043D\u043D\u043E\u0441\u0442\u0438!
|
||||
|
||||
#Logout Screen Messages
|
||||
screen.logout.header=\u0412\u044B\u0445\u043E\u0434 \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043C\u044B \u0443\u0441\u043F\u0435\u0448\u0435\u043D.
|
||||
screen.logout.success=\u0412\u044B \u0443\u0441\u043F\u0435\u0448\u043D\u043E \u0432\u044B\u0448\u043B\u0438 \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043C\u044B Central Authentication Service.
|
||||
screen.logout.security=\u0412 \u0446\u0435\u043B\u044F\u0445 \u043D\u0430\u0434\u0435\u0436\u043D\u043E\u0433\u043E \u0443\u0440\u043E\u0432\u043D\u044F \u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u043E\u0441\u0442\u0438, \u0437\u0430\u043A\u0440\u043E\u0439\u0442\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440.
|
||||
|
||||
|
||||
screen.service.sso.error.header=\u041F\u0435\u0440\u0435\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0435 \u043F\u043E\u0434\u043B\u0438\u043D\u043D\u043E\u0441\u0442\u0438 \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u0434\u043B\u044F \u0434\u043E\u0441\u0442\u0443\u043F\u0430 \u043A \u0441\u0435\u0440\u0432\u0438\u0441\u0443.
|
||||
screen.service.sso.error.message=\u0412\u044B \u043F\u043E\u043F\u044B\u0442\u0430\u043B\u0438\u0441\u044C \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u0434\u043E\u0441\u0442\u0443\u043F \u043A \u0441\u0435\u0440\u0432\u0438\u0441\u0443 \u043A\u043E\u0442\u043E\u0440\u043E\u043C\u0443 \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u043F\u0435\u0440\u0435\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0435 \u043F\u043E\u0434\u043B\u0438\u043D\u043D\u043E\u0441\u0442\u0438. \u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430 <a href="{0}">\u0441\u0434\u0435\u043B\u0430\u0439\u0442\u0435 \u044D\u0442\u043E \u0441\u043D\u043E\u0432\u0430</a>.
|
||||
|
||||
username.required=\u0418\u043C\u044F \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F - \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E\u0435 \u043F\u043E\u043B\u0435 \u0432\u0432\u043E\u0434\u0430.
|
||||
password.required=\u041F\u0430\u0440\u043E\u043B\u044C - \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E\u0435 \u043F\u043E\u043B\u0435 \u0432\u0432\u043E\u0434\u0430.
|
||||
|
||||
# Authentication failure messages
|
||||
authenticationFailure.AccountDisabledException=\u042D\u0442\u0430 \u0443\u0447\u0451\u0442\u043D\u0430\u044F \u0437\u0430\u043F\u0438\u0441\u044C \u0432\u0440\u0435\u043C\u0435\u043D\u043D\u043E \u043D\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044E\u0449\u0430\u044F.
|
||||
authenticationFailure.AccountLockedException=\u042D\u0442\u0430 \u0443\u0447\u0451\u0442\u043D\u0430\u044F \u0437\u0430\u043F\u0438\u0441\u044C \u0437\u0430\u0431\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0430.
|
||||
authenticationFailure.CredentialExpiredException=\u0412\u0430\u0448 \u043F\u0430\u0440\u043E\u043B\u044C \u043F\u0440\u043E\u0441\u0440\u043E\u0447\u0435\u043D.
|
||||
authenticationFailure.InvalidLoginLocationException=\u0412\u0445\u043E\u0434 \u0432 \u0441\u0438\u0441\u0442\u0435\u043C\u0443 \u0438\u0437 \u0434\u0430\u043D\u043D\u043E\u0433\u043E \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0430 \u0437\u0430\u043F\u0440\u0435\u0449\u0451\u043D.
|
||||
authenticationFailure.InvalidLoginTimeException=\u0412\u0445\u043E\u0434 \u0432 \u0441\u0438\u0441\u0442\u0435\u043C\u0443 \u0432 \u0434\u0430\u043D\u043D\u043E\u0435 \u0432\u0440\u0435\u043C\u044F \u0441\u0443\u0442\u043E\u043A \u0437\u0430\u043F\u0440\u0435\u0449\u0451\u043D.
|
||||
authenticationFailure.AccountNotFoundException=\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435 \u043E \u043F\u043E\u0434\u043B\u0438\u043D\u043D\u043E\u0441\u0442\u0438.
|
||||
authenticationFailure.FailedLoginException=\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435 \u043E \u043F\u043E\u0434\u043B\u0438\u043D\u043D\u043E\u0441\u0442\u0438.
|
||||
authenticationFailure.UNKNOWN=\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435 \u043E \u043F\u043E\u0434\u043B\u0438\u043D\u043D\u043E\u0441\u0442\u0438.
|
||||
|
||||
INVALID_REQUEST_PROXY=\u041E\u0431\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0430 'pgt' \u0438 'targetService' \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u044B.
|
||||
INVALID_TICKET_SPEC="Ticket" \u043D\u0435 \u043F\u0440\u043E\u0448\u0435\u043B \u0443\u0441\u043F\u0435\u0448\u043D\u0443\u044E \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0443 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u0438. \u0412\u043E\u0437\u043C\u043E\u0436\u043D\u044B\u0435 \u0438\u0441\u0442\u043E\u0447\u043D\u0438\u043A\u0438 \u043E\u0448\u0438\u0431\u043E\u043A \u043C\u043E\u0433\u0443\u0442 \u0432\u043A\u043B\u044E\u0447\u0430\u0442\u044C \u043F\u043E\u043F\u044B\u0442\u043A\u0443 \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438 \u0434\u0435\u0438\u0441\u0442\u0432\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u0438 "Proxy Ticket" \u043F\u043E\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043E\u043C "Service Ticket validator" \u0438\u043B\u0438 \u043D\u0435 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0438\u0441\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u044F \u0441 \u0442\u0440\u0435\u0431\u043E\u0432\u0430\u043D\u0438\u0435\u043C "renew request: true".
|
||||
INVALID_REQUEST=\u041E\u0431\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0430 'service' \u0438 'ticket' \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u044B.
|
||||
INVALID_TICKET="Ticket" ''{0}'' \u043D\u0435 \u0440\u0430\u0441\u043F\u043E\u0437\u043D\u0430\u043D.
|
||||
INVALID_SERVICE="Ticket" ''{0}'' \u043D\u0435 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u043D\u043E\u043C\u0443 \u0441\u0435\u0440\u0432\u0438\u0441\u0443. \u0418\u0437\u043D\u0430\u0447\u0430\u043B\u044C\u043D\u044B\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u0431\u044B\u043B ''{1}'' , \u0430 \u043F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u043D\u044B\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u0431\u044B\u043B ''{2}''
|
||||
INVALID_PROXY_CALLBACK=\u041F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u043D\u044B\u0439 proxy callback url ''{0}'' \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u043F\u0440\u043E\u0439\u0442\u0438 \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0443 \u043F\u043E\u0434\u043B\u0438\u043D\u043D\u043E\u0441\u0442\u0438.
|
||||
UNAUTHORIZED_SERVICE_PROXY=\u041F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u043D\u044B\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 ''{0}'' \u043D\u0435 \u0443\u043F\u043E\u043B\u043D\u043E\u043C\u043E\u0447\u0435\u043D \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C CAS proxy authentication.
|
||||
|
||||
screen.service.error.header=\u041F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u043D\u0435 \u0443\u043F\u043E\u043B\u043D\u043E\u043C\u043E\u0447\u0435\u043D\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C CAS
|
||||
screen.service.error.message=\u041F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435, \u043A\u043E\u0442\u043E\u0440\u043E\u0435 \u043F\u044B\u0442\u0430\u043B\u043E\u0441\u044C \u043F\u0440\u043E\u0439\u0442\u0438 \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0443 \u043F\u043E\u0434\u043B\u0438\u043D\u043D\u043E\u0441\u0442\u0438, \u043D\u0435 \u0443\u043F\u043E\u043B\u043D\u043E\u043C\u043E\u0447\u0435\u043D\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C CAS.
|
||||
screen.service.empty.error.message=\u0420\u0435\u0433\u0438\u0441\u0442\u0440 \u0441\u0435\u0440\u0432\u0438\u0441\u043E\u0432 \u043F\u0443\u0441\u0442. \u041F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044E\u0449\u0438\u0435 CAS, \u0434\u043E\u043B\u0436\u043D\u044B \u0431\u044B\u0442\u044C \u0432\u0432\u0435\u0434\u0435\u043D\u044B \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0441\u0435\u0440\u0432\u0438\u0441\u043E\u0432.
|
||||
|
||||
# Password policy
|
||||
password.expiration.warning=\u0421\u0440\u043E\u043A \u0433\u043E\u0434\u043D\u043E\u0441\u0442\u0438 \u043F\u0430\u0440\u043E\u043B\u044F \u0438\u0441\u0442\u0435\u043A\u0430\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 {0} \u0434\u0435\u043D\u044C/\u0434\u043D\u0435\u0439. \u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430 <a href="{1}">\u0438\u0437\u043C\u0435\u043D\u0438\u0442\u0435 \u0441\u0432\u043E\u0439 \u043F\u0430\u0440\u043E\u043B\u044C</a> \u0441\u0435\u0439\u0447\u0430\u0441.
|
||||
password.expiration.loginsRemaining=\u0423 \u0432\u0430\u0441 \u043E\u0441\u0442\u0430\u043B\u043E\u0441\u044C {0} \u0432\u0445\u043E\u0434/\u0432\u0445\u043E\u0434\u043E\u0432 \u0432 \u0441\u0438\u0441\u0442\u0435\u043C\u0443 \u043F\u0435\u0440\u0435\u0434 \u0442\u0435\u043C \u043A\u0430\u043A \u0432\u044B \u0431\u0443\u0434\u0435\u0442\u0435 <strong>\u041E\u0411\u042F\u0417\u0410\u041D\u042B</strong> \u043F\u043E\u043C\u0435\u043D\u044F\u0442\u044C \u043F\u0430\u0440\u043E\u043B\u044C.
|
||||
screen.accountdisabled.heading=\u042D\u0442\u0430 \u0443\u0447\u0451\u0442\u043D\u0430\u044F \u0437\u0430\u043F\u0438\u0441\u044C \u0432\u0440\u0435\u043C\u0435\u043D\u043D\u043E \u043D\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044E\u0449\u0430\u044F.
|
||||
screen.accountdisabled.message=\u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430 \u0441\u0432\u044F\u0436\u0438\u0442\u0435\u0441\u044C \u0441 \u0441\u0438\u0441\u0442\u0435\u043C\u043D\u044B\u043C \u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440\u043E\u043C \u0434\u043B\u044F \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u044F \u0434\u043E\u0441\u0442\u0443\u043F\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043C\u0443.
|
||||
screen.accountlocked.heading=\u042D\u0442\u0430 \u0443\u0447\u0451\u0442\u043D\u0430\u044F \u0437\u0430\u043F\u0438\u0441\u044C \u0437\u0430\u0431\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0430.
|
||||
screen.accountlocked.message=\u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430 \u0441\u0432\u044F\u0436\u0438\u0442\u0435\u0441\u044C \u0441 \u0441\u0438\u0441\u0442\u0435\u043C\u043D\u044B\u043C \u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440\u043E\u043C \u0434\u043B\u044F \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u044F \u0434\u043E\u0441\u0442\u0443\u043F\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043C\u0443.
|
||||
screen.expiredpass.heading=\u0421\u0440\u043E\u043A \u0433\u043E\u0434\u043D\u043E\u0441\u0442\u0438 \u0432\u0430\u0448\u0435\u0433\u043E \u043F\u0430\u0440\u043E\u043B\u044F \u043F\u0440\u043E\u0441\u0440\u043E\u0447\u0435\u043D.
|
||||
screen.expiredpass.message=\u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430 <a href="{0}">\u043F\u043E\u043C\u0435\u043D\u044F\u0439\u0442\u0435 \u0432\u0430\u0448 \u043F\u0430\u0440\u043E\u043B\u044C</a>.
|
||||
screen.mustchangepass.heading=\u0412\u0430\u043C \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u043F\u043E\u043C\u0435\u043D\u044F\u0442\u044C \u0432\u0430\u0448 \u043F\u0430\u0440\u043E\u043B\u044C.
|
||||
screen.mustchangepass.message=\u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430 <a href="{0}">\u043F\u043E\u043C\u0435\u043D\u044F\u0439\u0442\u0435 \u0432\u0430\u0448 \u043F\u0430\u0440\u043E\u043B\u044C</a>.
|
||||
screen.badhours.heading=\u0412\u0430\u0448\u0435\u0439 \u0443\u0447\u0435\u0442\u043D\u043E\u0439 \u0437\u0430\u043F\u0438\u0441\u0438 \u0437\u0430\u043F\u0440\u0435\u0449\u0451\u043D \u0432\u0445\u043E\u0434 \u0432 \u0441\u0438\u0441\u0442\u0435\u043C\u0443 \u0432 \u0434\u0430\u043D\u043D\u043E\u0435 \u0432\u0440\u0435\u043C\u044F \u0441\u0443\u0442\u043E\u043A.
|
||||
screen.badhours.message=\u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430 \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0432\u043E\u0439\u0442\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043C\u0443 \u043F\u043E\u0437\u0436\u0435.
|
||||
screen.badworkstation.heading=\u0412\u044B \u043D\u0435 \u043C\u043E\u0436\u0435\u0442\u0435 \u0432\u043E\u0439\u0442\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043C\u0443 \u0441 \u0434\u0430\u043D\u043D\u043E\u0433\u043E \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0430.
|
||||
screen.badworkstation.message=\u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430 \u0441\u0432\u044F\u0436\u0438\u0442\u0435\u0441\u044C \u0441 \u0441\u0438\u0441\u0442\u0435\u043C\u043D\u044B\u043C \u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440\u043E\u043C \u0434\u043B\u044F \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u044F \u0434\u043E\u0441\u0442\u0443\u043F\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043C\u0443.
|
||||
|
||||
# OAuth
|
||||
screen.oauth.confirm.header=\u0410\u0432\u0442\u043E\u0440\u0438\u0437\u0430\u0446\u0438\u044F
|
||||
screen.oauth.confirm.message=\u0412\u044B \u043D\u0430\u043C\u0435\u0440\u0435\u043D\u044B \u0434\u0430\u0442\u044C \u043F\u043E\u043B\u043D\u044B\u0439 \u0434\u043E\u0441\u0442\u0443\u043F \u043A \u0432\u0430\u0448\u0435\u043C\u0443 \u043F\u0440\u043E\u0444\u0438\u043B\u044E \u0434\u0430\u043D\u043D\u043E\u043C\u0443 \u0441\u0435\u0440\u0432\u0438\u0441\u0443: "{0}" ?
|
||||
screen.oauth.confirm.allow=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044C \u0434\u043E\u0441\u0442\u0443\u043F
|
||||
|
||||
# Unavailable
|
||||
screen.unavailable.heading=CAS \u043D\u0435 \u0434\u043E\u0441\u0442\u0443\u043F\u0435\u043D
|
||||
screen.unavailable.message=\u041F\u0440\u043E\u0438\u0437\u043E\u0448\u043B\u0430 \u043E\u0448\u0438\u0431\u043A\u0430 \u0432 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0435 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438 \u0432\u0430\u0448\u0435\u0433\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0430. \u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430 \u0441\u0432\u044F\u0436\u0438\u0442\u0435\u0441\u044C \u0441 \u0432\u0430\u0448\u0435\u0439 \u0441\u043B\u0443\u0436\u0431\u043E\u0439 \u0442\u0435\u0445\u043D\u0438\u0447\u0435\u0441\u043A\u043E\u0439 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u043A\u0438 \u0438\u043B\u0438 \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0435\u0449\u0451 \u0440\u0430\u0437.
|
||||
@@ -0,0 +1,180 @@
|
||||
screen.welcome.welcome=Vitajte v CAS - Central Authentication Service
|
||||
screen.welcome.security=Z bezpečnostných dôvodov sa, prosím, <a href="logout">odhláste</a> a ukončite prácu s webovým prehliadačom, ak ste ukončili prácu so službami vyžadujúcimi autentifikáciu!
|
||||
screen.welcome.instructions=Zadajte Vaše používateľské meno a heslo
|
||||
screen.welcome.label.netid=<span class="accesskey">M</span>eno:
|
||||
screen.welcome.label.netid.accesskey=m
|
||||
screen.welcome.label.password=<span class="accesskey">H</span>eslo:
|
||||
screen.welcome.label.password.accesskey=h
|
||||
screen.welcome.label.publicstation=Som na verejnej pracovnej stanici.
|
||||
screen.welcome.label.warn=<span class="accesskey">V</span>arovať pred prihlásením do iných služieb.
|
||||
screen.welcome.label.warn.accesskey=v
|
||||
screen.welcome.label.warnremove=Neupozorňovať opakovane
|
||||
screen.welcome.button.login=PRIHLÁSIŤ
|
||||
screen.welcome.button.logout=ODHLÁSIŤ
|
||||
screen.welcome.button.loginwip=Overenie hesla...
|
||||
screen.welcome.button.register=Registrovať
|
||||
screen.welcome.button.print=Vytlačiť
|
||||
screen.welcome.button.clear=VYMAZAŤ
|
||||
|
||||
screen.welcome.label.loginwith=Alebo sa prihláste pomocou:
|
||||
screen.cookies.disabled.title=Cookies v prehliadači sú zakázané
|
||||
screen.cookies.disabled.message=Váš browser nepodporuje cookies. Single Sign On NEBUDE FUNGOVAŤ.
|
||||
|
||||
screen.pm.button.submit=OK
|
||||
screen.pm.button.cancel=ZRUŠIŤ
|
||||
screen.pm.button.forgotpwd=<a href="https://pwd.example.org">Zabudli ste heslo? </a>
|
||||
screen.pm.button.resetPassword=Zmeniť heslo
|
||||
screen.pm.reset.username=Používateľské meno:
|
||||
screen.pm.reset.heading=Neúspešná zmena hesla
|
||||
screen.pm.reset.message=Nepodarilo sa vykonať zmenu hesla.
|
||||
screen.pm.reset.qstitle=Odpovedzte bezpečnostné otázky
|
||||
screen.pm.reset.qsmsg=Vitajte <strong>{0}</strong>. Pred zmenou hesla musíte odpovedať nasledovné bezpečnostné otázky.
|
||||
screen.pm.reset.sentInstructions=Čoskoro by ste mali dostať e-mail na zmenu Vášho hesla. Tieto pokyny sú časovo obmedzené.
|
||||
screen.pm.reset.sent=Pokyny na zmenu hesla boli úspešne odoslané.
|
||||
screen.pm.reset.title=Zmeňte Vaše heslo
|
||||
screen.pm.reset.instructions=Zadajte Vaše používateľské meno, Pošleme Vám e-mail s pokynmi na zmenu hesla.
|
||||
screen.aup.button.accept=PRIJAŤ
|
||||
screen.aup.button.cancel=ZRUŠIŤ
|
||||
|
||||
screen.nonsecure.title=Nezabezpečené spojenie
|
||||
screen.nonsecure.message=Pristupujete k serveru CAS cez nezabezpečené spojenie. Single Sign On NEBUDE FUNGOVAŤ. Ak chcete aby single sign on fungovalo, musíte sa prihlásiť cez HTTPS.
|
||||
|
||||
screen.defaultauthn.title=Statická autentifikácia
|
||||
screen.defaultauthn.heading=CAS je nakonfigurovaný na akceptovanie pevne definovaného zoznamu používateľov. Upozorňujeme, že toto nastavenie je vhodné LEN pre demonštračné účely.
|
||||
logo.title=Prechod na domovskú stránku
|
||||
copyright=Copyright © 2005–2015 Apereo, Inc.
|
||||
screen.capslock.on = Klávesa CAPSLOCK je zapnutá!
|
||||
|
||||
screen.button.continue=Pokračovať
|
||||
screen.post.response.message=Budete presmerovaní na {0}.
|
||||
# Remember-Me Authentication
|
||||
screen.rememberme.checkbox.title=Zapamätať si ma
|
||||
|
||||
screen.gua.confirm.message=Ak nespoznávate tento obrázok, nepokračujte.
|
||||
# Blocked Errors Page
|
||||
screen.blocked.header=Prístup zamietnutý
|
||||
screen.blocked.message=Vložili ste viackrát nesprávne heslo. Vaše prihlásenie je dočasne zablokované.
|
||||
AbstractAccessDecisionManager.accessDenied=Nie ste oprávnený k prístupu k tomuto zdroju. Pre viac informácií kontaktujte administrátora.
|
||||
|
||||
#Confirmation Screen Messages
|
||||
screen.confirmation.message=Kliknite <a href\="{0}">sem</a> pre prístup k aplikácii.
|
||||
|
||||
screen.authentication.warning=Prihlásenie sa podarilo s varovaním
|
||||
#Generic Success Screen Messages
|
||||
screen.success.header=Prihlásenie bolo úspešné
|
||||
screen.success.success= {0}, práve ste sa úspešne prihlásili do CAS.
|
||||
screen.success.security=Ak ste ukončili prácu, z bezpečnostných dôvodov prosím <a href="logout">odhláste sa</a> a ukončite prácu s prehliadačom.
|
||||
|
||||
screen.logout.confirm.header=Chcete sa odhlásiť úplne?
|
||||
screen.logout.confirm.text=Aplikácia Vás presmerovala do Central Authentication Service \
|
||||
pre úplné odhlásenie. Ak sa rozhodnete odhlásiť, budú po Vás opäť požadované prihlasovacie údaje \
|
||||
pri prístupe ku chránenýn aplikáciám.<p><p><br>Chcete pokračovať v odhlásení?
|
||||
#Logout Screen Messages
|
||||
screen.logout.header=Odhlásenie bolo úspešné
|
||||
screen.logout.success=Úspešne ste sa odhlásili z CAS. Môžete sa <a href="login">prihlásiť</a> znova.
|
||||
screen.logout.fc.success=Úspešne ste sa odhlásili z CAS. Môžete sa <a href="login">prihlásiť</a> znova. Keďže je nastavené jednotné odhlásenie\
|
||||
nasledujúce aplikácie sú <strong>upozornené</strong>, aby Vás odhlásili a ukončili sedenie. Upozorňujeme, že táto akcia nezaručuje \
|
||||
odhlásenie, pretože je na apilkáciách samotných, aby správne implementovali odhlásenie.
|
||||
screen.logout.security=Z bezpečnostných dôvodov ukončite prácu s prehliadačom.
|
||||
|
||||
|
||||
screen.service.sso.error.header=Na prístup k službe je nutná opakovaná autentifikácia
|
||||
screen.service.sso.error.message=Pokúsili ste sa o prístup k službe, ktorá vyžaduje autentifkáciu bez opätovnej autentifikácie. Prosím skúste sa <a href\="{0}">autentifikovať znovu</a>.
|
||||
screen.service.required.message=Pokúsili ste sa autentifikovať bez zadania cieľovej aplikácie. Prosím preverte požiadavku a skúste znovu.
|
||||
|
||||
captchaError=reCAPTCHA kontrola bola neúspešná.
|
||||
username.required=Meno používateľa je povinné pole.
|
||||
password.required=Heslo je povinné pole.
|
||||
|
||||
confirmedPassword.required=Heslo je potrebné zadať znova.
|
||||
pm.passwordsMustMatch=Zadané heslá sa musia zhodovať.
|
||||
pm.passwordFailedCriteria=Zadané heslo nespĺňa podmienky bezpečnostnej politiky. Prosím, skúste znova.
|
||||
pm.updateFailure=Heslo sa nepodarilo zmeniť. Prosím, skúste znova.
|
||||
# Authentication failure messages
|
||||
authenticationFailure.AccountDisabledException=Tento používateľský účet bol deaktivovaný.
|
||||
authenticationFailure.AccountLockedException=Tento používateľský účet bol uzamknutý.
|
||||
authenticationFailure.CredentialExpiredException=Vaše heslo je expirované.
|
||||
authenticationFailure.InvalidLoginLocationException=Z tejto pracovnej stanice nie je možné sa prihlásiť.
|
||||
authenticationFailure.InvalidLoginTimeException=Váš účet má v tomto čase zakázaný prístup.
|
||||
authenticationFailure.AccountNotFoundException=Nesprávne používateľské meno alebo heslo.
|
||||
authenticationFailure.FailedLoginException=Nesprávne používateľské meno alebo heslo.
|
||||
authenticationFailure.AccountPasswordMustChangeException=Vaše heslo je už neplatné a musíte ho zmeniť.
|
||||
authenticationFailure.UnauthorizedServiceForPrincipalException=Prístup na službu nemáte povolený.
|
||||
authenticationFailure.UNKNOWN=Nesprávne používateľské meno alebo heslo.
|
||||
|
||||
authenticationFailure.AuthenticationException=Nesprávne používateľské meno alebo heslo. Pokus o prihlásenie bol neúspešný.
|
||||
INVALID_REQUEST_PROXY=Vaša požiadavka je nekorektne formulovaná. Prosím uistite sa že všetky požadované parametre sú v požiadavke a sú správne formátované.
|
||||
INVALID_TICKET_SPEC=Ticket neprešiel validáciou. Možná príčina je validácia Proxy Ticketu cez Service Ticket validator.
|
||||
INVALID_REQUEST='service' a 'ticket' parametre sú povinné
|
||||
INVALID_AUTHENTICATION_CONTEXT=Požiadavka na overenie pre [''{0}''] nemôže byť potvrdená, pretože je nerozpooznaná alebo neúplná.
|
||||
INVALID_TICKET=Ticket ''{0}'' nebol rozpoznaný
|
||||
INVALID_PROXY_GRANTING_TICKET=PGT bol pre tento ST už vygenerovaný. Nemôžeme poskytnúť viac ako jeden PGT pre ST.
|
||||
INVALID_SERVICE=Ticket ''{0}'' nezodpovedá dodanej službe. Pôvodná služba bola ''{1}'' a dodaná bola ''{2}''.
|
||||
INVALID_PROXY_CALLBACK=Dodaný proxy callback url ''{0}'' nemôže byť authentifikovaný.
|
||||
UNAUTHORIZED_SERVICE_PROXY=Dodaná služba ''{0}'' nie je autorizovaná na použitie CAS autentifikácie.
|
||||
|
||||
UNSATISFIED_AUTHN_POLICY=Prístup ku službe bol zamietnutý pre nesplnenie bezpečnostnej politiky.
|
||||
screen.service.error.header=Aplikácia nie je autorizovaná na použitie CAS
|
||||
service.not.authorized.missing.attr=Nie ste autorizovaný na prístup k aplikácii pretože Vaše používateľský účet \
|
||||
neobsahuje privilégiá požadované serverom CAS na autentifikáciu do tejto služby. Prosím oboznámte Vášho správcu systému.
|
||||
screen.service.error.message=Aplikácia do ktorej sa pokúšate prihlásiť nie je autorizovaná na použitie týmto CAS serverom.
|
||||
screen.service.empty.error.message=Register služieb serveru CAS je prázdny a neobsahuje definície služieb. \
|
||||
Aplikácia ktorá sa chce autentifikovať serverom CAS musí byť explicitne definovaná v registri služieb.
|
||||
|
||||
# Password policy
|
||||
password.expiration.warning=Vaše heslo expiruje za {0} deň/dní. Prosím <a href="{1}">zmeňte Vaše heslo</a> teraz.
|
||||
password.expiration.loginsRemaining=Máte {0} prístup(ov) k dispozícii, kým <strong>MUSÍTE</strong> zmeniť Vaše heslo.
|
||||
screen.accountdisabled.heading=Tento používateľský účet bol deaktivovaný.
|
||||
screen.accountdisabled.message=Prosím kontaktujte systémového administrátora na opätovné získanie prístupu.
|
||||
screen.accountlocked.heading=Tento používateľský účet bol uzamknutý.
|
||||
screen.accountlocked.message=Prosím kontaktujte systémového administrátora na opätovné získanie prístupu.
|
||||
screen.expiredpass.heading=Vaše heslo expirovalo.
|
||||
screen.expiredpass.message=Prosím <a href\="{0}">zmeňte svoje heslo</a>.
|
||||
screen.mustchangepass.heading=Je nutné zmeniť Vaše heslo.
|
||||
screen.mustchangepass.message=Prosím <a href="{0}">zmeňte svoje heslo</a>.
|
||||
screen.badhours.heading=Váš účet v tomto čase nemá povolený prístup.
|
||||
screen.badhours.message=Prosím skúste znovu neskôr.
|
||||
screen.authnblocked.heading=Pokus o prihlásenie bol zamietnutý.
|
||||
screen.authnblocked.message=Váš pokus o prihlásenie z aktuálneho zariadenia nie je dôveryhodný a povolený.
|
||||
screen.risk.authnblocked.heading=Pokus o prihlásenie je zablokovaný.
|
||||
screen.risk.authnblocked.message=Váš pokus o prihlásenie nie je dôveryhodný a povolený z tejto pracovnej stanice.
|
||||
screen.badworkstation.heading=Nie je možné sa prihlásiť z tejto pracovnej stanice.
|
||||
screen.badworkstation.message=Na opätovné získanie prístupu prosím kontaktujte administrátora.
|
||||
|
||||
screen.pm.success.header=Úspešná zmena hesla
|
||||
screen.pm.success.message=Vaše heslo bolo úspešne zmenené.
|
||||
screen.pm.confirmpsw=Potvrďte heslo:
|
||||
screen.pm.enterpsw=Zadajte heslo:
|
||||
screen.pac4j.unauthz.pagetitle=Nepovolený prístup
|
||||
screen.pac4j.unauthz.gotoapp=Späť na aplikáciu
|
||||
screen.pac4j.unauthz.login=Späť na CAS
|
||||
screen.pac4j.unauthz.heading=Nepotvrdený prístup
|
||||
screen.pac4j.unauthz.message=Požiadavka o prihlásenie bola odmientnutá/zrušená, alebo alebo poskytovateľ identity odmietol prístup pre interné pravidlá.
|
||||
screen.authentication.gauth.register=Vaše konto nie je registrované. Použite nastavenia nižšie pre registráciu zariadenia v CAS.
|
||||
screen.authentication.gauth.key=Tajný kód pre registráciu je {0}
|
||||
# OAuth
|
||||
screen.oauth.confirm.header=Autorizácia
|
||||
screen.oauth.confirm.message=Chcete povoliť prístup k Vášmu kompletnému profilu pre "{0}" ?
|
||||
screen.oauth.confirm.allow=Povoliť
|
||||
|
||||
screen.oauth.confirm.deny=Zakázať
|
||||
cas.oauth.confirm.pagetitle=Povoľte prístup
|
||||
# Unavailable
|
||||
screen.unavailable.heading=CAS nie je schopný spracovať požiadavku: "{0}:{1}"
|
||||
screen.unavailable.message=Pri spracovaní požiadavky nastala chyba. Prosím informujte podporu alebo skúste znovu.
|
||||
cas.sessions.ajax.error=Nastala chyba. Zopakujte, prosím, Vašu požiadavku.
|
||||
cas.login.pagetitle=Prihlásenie
|
||||
cas.login.resources.header=Odkazy na CAS zdroje
|
||||
cas.login.resources.wiki=Dokumentácia
|
||||
cas.mfa.duologin.pagetitle=DuoSecurity autentifikácia
|
||||
cas.mfa.googleauth.pagetitle=Google autentifikácia
|
||||
cas.mfa.googleauth.label.token=Token:
|
||||
cas.mfa.azure.pagetitle=AZURE autentifikácia
|
||||
cas.mfa.radius.pagetitle=RADIUS autentifikácia
|
||||
cas.mfa.yubikey.pagetitle=YubiKey Autentifikácia
|
||||
cas.mfa.authy.pagetitle=Authy autentifikácia
|
||||
cas.mfa.registerdevice.label.title=Restrácia zariadenia
|
||||
cas.mfa.registerdevice.label.intro=Pomenujte toto zariadenie
|
||||
cas.mfa.registerdevice.pagetitle=Registrácia zariadenia
|
||||
cas.mfa.registerdevice.label.name=Meno
|
||||
cas.mfa.registerdevice.button.register=Registrovať
|
||||
@@ -0,0 +1,43 @@
|
||||
#Welcome Screen Messages
|
||||
|
||||
screen.welcome.welcome=Dobrodo\u0161li v ARNES CAS online\! Uporabite uporabni\u0161ko ime in geslo, ki vam ga je dodeli administrator ARNES organizacije
|
||||
screen.welcome.security=Zaradi varnostnih razlogov, prosimo, da naredite odjavo in zaprete brskalnik, ko zapustite spletni vir, ki je zahteval va\u0161o avtentikacijo.
|
||||
screen.welcome.instructions=Vpi\u0161ite va\u0161o uporabni\u0161ko ime(eduprincipalName\: ime@arnes.si) in geslo.
|
||||
screen.welcome.label.netid=<span class\="accesskey">edu</span>PersonPrincipalName\:
|
||||
screen.welcome.label.netid.accesskey=n
|
||||
screen.welcome.label.password=<span class\="accesskey">G</span>eslo\:
|
||||
screen.welcome.label.password.accesskey=p
|
||||
screen.welcome.label.warn=<span class\="accesskey">O</span>pozori me, ko naredim novo prijavo v drugi spletni vir.
|
||||
screen.welcome.label.warn.accesskey=w
|
||||
screen.welcome.button.login=Prijava
|
||||
screen.welcome.button.clear=ZBRI\u0160I
|
||||
|
||||
#Confirmation Screen Messages
|
||||
screen.confirmation.message=Klikni <a href\="{0}">tukaj</a> za vstop v aplikacijo.
|
||||
|
||||
#Generic Success Screen Messages
|
||||
screen.success.header=Prijava uspela
|
||||
screen.success.success=Uspe\u0161no ste se prijavili v Centralno Avtenikacijsko Storitev.
|
||||
screen.success.security=Zaradi varnostnih razlogov, prosimo, da naredite odjavo in zaprete brskalnik, ko zapustite spletni vir, ki je zahteval va\u0161o avtentikacijo.
|
||||
|
||||
#Logout Screen Messages
|
||||
screen.logout.header=Odjava uspela
|
||||
screen.logout.success=Uspe\u0161no ste se prijavili v Centralno Avtenikacijsko Storitev.
|
||||
screen.logout.security=Zaradi varnostnih razlogov zaprite brskalnik
|
||||
|
||||
|
||||
#Service Error Messages
|
||||
screen.service.error.header=Ne avtorizerana Storitev
|
||||
screen.service.error.message=Vstopiti ste hoteli do o spletne storitve nima dovoljenja do uporabe CAS storitve.
|
||||
|
||||
|
||||
username.required=Uporabni\u0161ko ime je nujno vpisati\!
|
||||
password.required=Geslo je nujno vpisati\!
|
||||
error.authentication.credentials.bad=Veredostojnost, ki ste jo vpisali ne moremo dolo\u010Diti, da je pristno\!
|
||||
error.authentication.credentials.unsupported=Veredostojnost, ki ste jo vpisali ni podprto v CAS-u\!
|
||||
|
||||
INVALID_REQUEST_PROXY='pgt' in 'targetService' parametra sta oba nujna\!
|
||||
INVALID_TICKET_SPEC=Ne uspe\u0161na validacija zahtevka. Mo\u017Ene napake so nastale pri vklju\u010Ditvi validacije v Proxy Ticket preko Service Ticket validacije.
|
||||
INVALID_REQUEST='service' in 'ticket' parametra sta oba nujna\!
|
||||
INVALID_TICKET=zahtevek ''{0}'' ni prepoznana
|
||||
INVALID_SERVICE=zahtevek ''{0}'' se ne ujema priskrbljeno storitvijo
|
||||
@@ -0,0 +1,50 @@
|
||||
#Author: Fredrik Nilsson http://www.infoflexconnect.se
|
||||
#Updated 2006-08-29: Pål Axelsson & Veronika Berglund IT Support Department at Uppsala University http://www.uu.se
|
||||
#Updated 2007-06-21: Pål Axelsson IT Support Department at Uppsala University http://www.uu.se
|
||||
|
||||
#Welcome Screen Messages
|
||||
|
||||
|
||||
screen.welcome.welcome=Välkommen till den centrala autentiseringstjänsten CAS. När du installerat men ännu inte konfigurerat CAS kan du autentisera genom att ange samma text som både användaridentitet och lösenord för att prova CAS.
|
||||
screen.welcome.security=Av säkerhetsskäl bör du logga ut och stänga webbläsaren när du är färdig med webbtjänsterna som kräver inloggning.
|
||||
screen.welcome.instructions=Ange din användaridentitet och ditt lösenord.
|
||||
screen.welcome.label.netid=<span class="accesskey">A</span>nvändarid:
|
||||
screen.welcome.label.netid.accesskey=a
|
||||
screen.welcome.label.password=<span class="accesskey">L</span>ösenord:
|
||||
screen.welcome.label.password.accesskey=l
|
||||
screen.welcome.label.warn=<span class="accesskey">V</span>arna mig innan jag loggar på en annan webbtjänst.
|
||||
screen.welcome.label.warn.accesskey=v
|
||||
screen.welcome.button.login=LOGGA IN
|
||||
screen.welcome.button.clear=RENSA
|
||||
|
||||
#Confirmation Screen Messages
|
||||
screen.confirmation.message=Klicka <a href="{0}">här</a> för att komma till webbtjänsten.
|
||||
|
||||
#Generic Success Screen Messages
|
||||
screen.success.header=Inloggningen lyckades
|
||||
screen.success.success=Du har loggat in i den centrala autentiseringstjänsten CAS.
|
||||
screen.success.security=Av säkerhetsskäl bör du logga ut och stänga webbläsaren när du är färdig med webbtjänsterna som kräver inloggning.
|
||||
|
||||
#Logout Screen Messages
|
||||
screen.logout.header=Du har loggat ut!
|
||||
screen.logout.success=Du har loggat ut från den centrala autentiseringstjänsten CAS.
|
||||
screen.logout.security=Av säkerhetsskäl bör du stänga din webbläsare.
|
||||
|
||||
|
||||
screen.service.sso.error.header=Du måste logga in igen för att använda denna webbtjänst
|
||||
screen.service.sso.error.message=Du försökte använda en webbtjänst som kräver att du loggar in igen för att använda den. <a href="{0}">Logga in igen</a>!
|
||||
|
||||
|
||||
username.required=Användaridentitet är en obligatoriskt uppgift.
|
||||
password.required=Lösenord är en obligatoriskt uppgift.
|
||||
error.authentication.credentials.bad=Inloggningsuppgifterna du angav kunde inte valideras!
|
||||
error.authentication.credentials.unsupported=Inloggningsuppgifterna du angav kan inte hanteras av CAS.
|
||||
|
||||
INVALID_REQUEST_PROXY=Både 'pgt' och 'targetService' är obligatoriska parametrar.
|
||||
INVALID_TICKET_SPEC=Ticket-valideringen misslyckades. Möjliga fel skulle kunna vara att försöka validera en Proxy Ticket via en validator för Service Ticket, eller att en ny inloggning inte genomfördes trots begäran.
|
||||
INVALID_REQUEST=Både 'service' och 'ticket' är obligatoriska parametrar.
|
||||
INVALID_TICKET=ticket ''{0}'' känns inte igen.
|
||||
INVALID_SERVICE=ticket ''{0}'' överenstämmer inte med angiven webbtjänst.
|
||||
|
||||
screen.service.error.header=Ej auktoriserad webbtjänst
|
||||
screen.service.error.message=Webbtjänsten du försökter ansluta till är ej auktoriserad att använda den centrala autentiseringstjänsten CAS.
|
||||
@@ -0,0 +1,47 @@
|
||||
# Author : Mert Caliskan <mcaliskan@gmail.com>
|
||||
# http://www.jroller.com/mert
|
||||
|
||||
#Welcome Screen Messages
|
||||
|
||||
screen.welcome.welcome=Tebrikler!, CAS'\u0131 \u00e7al\u0131\u015f\u0131r hale getirdiniz. Haz\u0131rdaki kimliklendirme mekanizmas\u0131 kullan\u0131c\u0131 ad\u0131 ve parola ayn\u0131 oldu\u011fu durumlarda giri\u015fe izin vermektedir. Hemen deneyebilirsiniz.
|
||||
screen.welcome.security=G\u00fcvenli\u011finiz i\u00e7in, i\u015finiz bittikten sonra kulland\u0131\u011f\u0131n\u0131z uygulamalardan \u00e7\u0131k\u0131\u015f yap\u0131n\u0131z ve taray\u0131c\u0131n\u0131z\u0131 kapat\u0131n\u0131z.
|
||||
screen.welcome.instructions=Kullan\u0131c\u0131 ad\u0131 ve parolan\u0131z\u0131 giriniz
|
||||
screen.welcome.label.netid=<span class="accesskey">K</span>ullan\u0131c\u0131 Ad\u0131:
|
||||
screen.welcome.label.netid.accesskey=k
|
||||
screen.welcome.label.password=<span class="accesskey">P</span>arola:
|
||||
screen.welcome.label.password.accesskey=p
|
||||
screen.welcome.label.warn=Di\u011fer sitelere girmeden \u00f6nce beni <span class="accesskey">u</span>yar.
|
||||
screen.welcome.label.warn.accesskey=u
|
||||
screen.welcome.button.login=G\u0130R\u0130\u015e
|
||||
screen.welcome.button.clear=TEM\u0130ZLE
|
||||
|
||||
#Confirmation Screen Messages
|
||||
screen.confirmation.message=Uygulamaya eri\u015fmek i\u00e7in <a href="{0}">buraya</a> t\u0131klay\u0131n\u0131z.
|
||||
|
||||
#Generic Success Screen Messages
|
||||
screen.success.header=Oturum ba\u015far\u0131yla a\u00e7\u0131ld\u0131.
|
||||
screen.success.success=Merkezi Kimliklendirme Servisi'ne ba\u015far\u0131l\u0131 bir \u015fekilde giri\u015f yapt\u0131n\u0131z.
|
||||
screen.success.security=G\u00fcvenlik nedenlerinden dolay\u0131, uygulamalar\u0131n kullan\u0131m\u0131 bittikten sonra sistemden \u00e7\u0131k\u0131\u015f yap\u0131p, taray\u0131c\u0131n\u0131z\u0131 kapat\u0131n\u0131z.
|
||||
|
||||
#Logout Screen Messages
|
||||
screen.logout.header=Oturum ba\u015far\u0131yla kapat\u0131ld\u0131.
|
||||
screen.logout.success=Merkezi Kimliklendirme Servisi'nden ba\u015far\u0131l\u0131 bir \u015fekilde \u00e7\u0131k\u0131\u015f yapt\u0131n\u0131z.
|
||||
screen.logout.security=G\u00fcvenlik nedenlerinden dolay\u0131, taray\u0131c\u0131n\u0131z\u0131 kapan\u0131t\u0131z.
|
||||
|
||||
screen.service.sso.error.header=Bu servise eri\u015fim i\u00e7in tekrar kimliklendirme gerekmektedir.
|
||||
screen.service.sso.error.message=Bir servise ard\u0131\u015f\u0131k kimlik onay\u0131 yaparak eri\u015fmeye \u00e7al\u0131\u015ft\u0131n\u0131z. Onay i\u00e7in l\u00fctfen tekrar <a href="{0}">t\u0131klay\u0131n\u0131z</a>.
|
||||
|
||||
|
||||
username.required=Kullan\u0131c\u0131 Ad\u0131 girilmesi gerekli bir aland\u0131r.
|
||||
password.required=Parola girilmesi gerekli bir aland\u0131r.
|
||||
error.authentication.credentials.bad=Kullan\u0131c\u0131 Kodu veya Parola bilginizde yanl\u0131\u015fl\u0131k var. L\u00fctfen kontrol edip tekrar deneyiniz.
|
||||
error.authentication.credentials.unsupported=Sa\u011flad\u0131\u011f\u0131n\u0131z kimliklendirme bilgileri Merkezi Kimliklendirme Sistemi taraf\u0131ndan tan\u0131nmamaktad\u0131r.
|
||||
|
||||
INVALID_REQUEST_PROXY='pgt' ve 'targetService' parametrelerinin her ikisi birden gereklidir.
|
||||
INVALID_TICKET_SPEC=Bilet do\u011frulama ba\u015far\u0131s\u0131z oldu. Olas\u0131 hatalar, servis bilet do\u011frulay\u0131c\u0131 ile Vekil (Proxy) bilet do\u011frulamak veya do\u011fru yenileme iste\u011fi kural\u0131na uyulmamas\u0131 olabilir.
|
||||
INVALID_REQUEST='service' ve 'ticket' parametrelerinin her ikisi birden gereklidir.
|
||||
INVALID_TICKET=Tan\u0131ms\u0131z bilet: ''{0}''
|
||||
INVALID_SERVICE=Bilet ''{0}'' belirtilen servis ile e\u015fle\u015fmiyor. As\u0131l servis: ''{1}'', belirtilen servis: ''{2}''.
|
||||
|
||||
screen.service.error.header=Uygulama, Merkezi Kimliklendirme Servisi'ni kullanmak i\u00e7in yetkilendirilmemi\u015f.
|
||||
screen.service.error.message=Kimliklendirme onay\u0131 yap\u0131lmaya \u00e7al\u0131\u015f\u0131lan uygulama, Merkezi Kimliklendirme Servisi'ni kullanmak i\u00e7in yetkilendirilmemi\u015f.
|
||||
@@ -0,0 +1,84 @@
|
||||
#Welcome Screen Messages
|
||||
|
||||
|
||||
|
||||
screen.welcome.welcome=\u0412\u0456\u0442\u0430\u0454\u043c\u043e \u0437 \u0443\u0441\u043f\u0456\u0448\u043d\u0438\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0438 CAS! "Authentication handler", \u0432\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0437\u0430 \u0443\u043c\u043e\u0432\u0447\u0430\u043d\u043d\u044f\u043c, \u0432\u0438\u0440\u043e\u0431\u043b\u044f\u0454 \u0432\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u0456 \u0432 \u0442\u043e\u043c\u0443 \u0432\u0438\u043f\u0430\u0434\u043a\u0443 \u044f\u043a\u0449\u043e \u0456\u043c'\u044f \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430 \u0456 \u043f\u0430\u0440\u043e\u043b\u044c \u0441\u043f\u0456\u0432\u043f\u0430\u0434\u0430\u044e\u0442\u044c: \u0441\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 CAS \u0432 \u0434\u0456\u0457.
|
||||
screen.welcome.security=\u0417 \u043c\u0435\u0442\u043e\u044e \u043d\u0430\u0434\u0456\u0439\u043d\u043e\u0433\u043e \u0440\u0456\u0432\u043d\u044f \u0431\u0435\u0437\u043f\u0435\u043a\u0438, \u0431\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0432\u0438\u0439\u0434\u0456\u0442\u044c \u0456\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u0438, \u0430 \u0442\u0430\u043a\u043e\u0436 \u0437\u0430\u043a\u0440\u0438\u0439\u0442\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440, \u0437\u0430\u043a\u0456\u043d\u0447\u0438\u0432\u0448\u0438 \u0434\u043e\u0441\u0442\u0443\u043f \u0434\u043e \u0441\u0435\u0440\u0432\u0456\u0441\u0443 \u044f\u043a\u0438\u0439 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0454 \u0432\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f \u0441\u043f\u0440\u0430\u0432\u0436\u043d\u043e\u0441\u0442\u0456!
|
||||
screen.welcome.instructions=\u0412\u0432\u0435\u0434\u0456\u0442\u044c \u043b\u043e\u0433\u0456\u043d \u0456 \u043f\u0430\u0440\u043e\u043b\u044c.
|
||||
screen.welcome.label.netid=\u041b\u043e\u0433\u0456\u043d:
|
||||
screen.welcome.label.netid.accesskey=n
|
||||
screen.welcome.label.password=<span class="accesskey">\u041f</span>\u0430\u0440\u043e\u043b\u044c:
|
||||
screen.welcome.label.password.accesskey=p
|
||||
screen.welcome.label.warn=<span class="accesskey">\u041f</span>\u043e\u043f\u0435\u0440\u0435\u0434\u0438\u0442\u0438 \u043f\u0435\u0440\u0435\u0434 \u0432\u0445\u043e\u0434\u043e\u043c \u043d\u0430 \u0456\u043d\u0448\u0456 \u0441\u0430\u0439\u0442\u0438.
|
||||
screen.welcome.label.warn.accesskey=\u043f
|
||||
screen.welcome.button.login=\u0423\u0412\u0406\u0419\u0422\u0418
|
||||
screen.welcome.button.clear=\u041e\u0427\u0418\u0421\u0422\u0418\u0422\u0418
|
||||
|
||||
#Confirmation Screen Messages
|
||||
screen.confirmation.message=\u041d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c <a href="{0}?ticket={1}">\u043d\u0430 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f</a> \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u0443 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443.
|
||||
|
||||
#Generic Success Screen Messages
|
||||
screen.success.header=\u0412\u0445\u0456\u0434 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0443\u0441\u043f\u0456\u0448\u043d\u0438\u0439.
|
||||
screen.success.success=\u0412\u0438 \u0443\u0441\u043f\u0456\u0448\u043d\u043e \u0443\u0432\u0456\u0439\u0448\u043b\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 "Central Authentication Service".
|
||||
screen.success.security=\u0417 \u043c\u0435\u0442\u043e\u044e \u043d\u0430\u0434\u0456\u0439\u043d\u043e\u0433\u043e \u0440\u0456\u0432\u043d\u044f \u0431\u0435\u0437\u043f\u0435\u043a\u0438, \u0431\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0432\u0438\u0439\u0434\u0456\u0442\u044c \u0456\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u0438, \u0430 \u0442\u0430\u043a\u043e\u0436 \u0437\u0430\u043a\u0440\u0438\u0439\u0442\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440, \u0437\u0430\u043a\u0456\u043d\u0447\u0438\u0432\u0448\u0438 \u0434\u043e\u0441\u0442\u0443\u043f \u0434\u043e \u0441\u0435\u0440\u0432\u0456\u0441\u0443 \u044f\u043a\u0438\u0439 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0454 \u0432\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f \u0441\u043f\u0440\u0430\u0432\u0436\u043d\u043e\u0441\u0442\u0456!
|
||||
|
||||
#Logout Screen Messages
|
||||
screen.logout.header=\u0412\u0438\u0445\u0456\u0434 \u0456\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u0438 \u0443\u0441\u043f\u0456\u0448\u043d\u0438\u0439.
|
||||
screen.logout.success=\u0412\u0438 \u0443\u0441\u043f\u0456\u0448\u043d\u043e \u0432\u0438\u0439\u0448\u043b\u0438 \u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u0438 "Central Authentication Service".
|
||||
screen.logout.security=\u0417 \u043c\u0435\u0442\u043e\u044e \u043d\u0430\u0434\u0456\u0439\u043d\u043e\u0433\u043e \u0440\u0456\u0432\u043d\u044f \u0431\u0435\u0437\u043f\u0435\u043a\u0438, \u0437\u0430\u043a\u0440\u0438\u0439\u0442\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440.
|
||||
|
||||
|
||||
#Service Error Messages
|
||||
screen.service.error.header=\u0421\u0435\u0440\u0432\u0456\u0441 \u0431\u0435\u0437 \u043f\u0440\u0430\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0443.
|
||||
screen.service.error.message=\u0421\u0435\u0440\u0432\u0456\u0441, \u0434\u043b\u044f \u044f\u043a\u043e\u0433\u043e \u0437\u0440\u043e\u0431\u043b\u0435\u043d\u0430 \u0441\u043f\u0440\u043e\u0431\u0430 \u043f\u0435\u0440\u0435\u0432\u0456\u0440\u043a\u0438 \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u0456, \u043d\u0435 \u043c\u0430\u0454 \u0434\u043e\u0441\u0442\u0443\u043f\u0443 \u0434\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0438 CAS.
|
||||
|
||||
|
||||
|
||||
username.required=\u0406\u043c'\u044f \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430 - \u043e\u0431\u043e\u0432'\u044f\u0437\u043a\u043e\u0432\u0435 \u043f\u043e\u043b\u0435 \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u044f.
|
||||
password.required=\u041f\u0430\u0440\u043e\u043b\u044c - \u043e\u0431\u043e\u0432'\u044f\u0437\u043a\u043e\u0432\u0435 \u043f\u043e\u043b\u0435 \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u044f.
|
||||
error.authentication.credentials.bad=\u0421\u043f\u0440\u0430\u0432\u0436\u043d\u0456\u0441\u0442\u044c \u043d\u0430\u0434\u0430\u043d\u0438\u0445 \u0432\u0456\u0440\u0447\u0438\u0445 \u0434\u0430\u043d\u0438\u0445 \u043d\u0435 \u043c\u043e\u0436\u0435 \u0431\u0443\u0442\u0438 \u043f\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0436\u0435\u043d\u0430.
|
||||
error.authentication.credentials.unsupported=\u041d\u0430\u0434\u0430\u043d\u0456 \u0432\u0456\u0440\u0447\u0456 \u0434\u0430\u043d\u0456 \u043d\u0435 \u043f\u0456\u0434\u0442\u0440\u0438\u043c\u0443\u044e\u0442\u044c\u0441\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u044e CAS.
|
||||
|
||||
INVALID_REQUEST_PROXY=\u041e\u0431\u0438\u0434\u0432\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 'pgt' \u0456 'targetService' \u043e\u0431\u043e\u0432'\u044f\u0437\u043a\u043e\u0432\u0456.
|
||||
INVALID_TICKET_SPEC="Ticket" \u043d\u0435 \u043f\u0440\u043e\u0439\u0448\u043e\u0432 \u0443\u0441\u043f\u0456\u0448\u043d\u0443 \u043f\u0435\u0440\u0435\u0432\u0456\u0440\u043a\u0443 \u0434\u0456\u0439\u0441\u043d\u043e\u0441\u0442\u0456. \u041c\u043e\u0436\u043b\u0438\u0432\u0456 \u0434\u0436\u0435\u0440\u0435\u043b\u0430 \u043f\u043e\u043c\u0438\u043b\u043e\u043a \u043c\u043e\u0436\u0443\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u0438 \u0441\u043f\u0440\u043e\u0431\u0443 \u043f\u0435\u0440\u0435\u0432\u0456\u0440\u043a\u0438 \u0434\u0435\u0456\u0441\u0442\u0432\u0456\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0456 "Proxy Ticket" \u0437\u0430 \u0434\u043e\u043f\u043e\u043c\u043e\u0433\u043e\u044e "Service Ticket validator" \u0430\u0431\u043e \u043d\u0435 \u0432\u0456\u0434\u043f\u043e\u0432\u0456\u0434\u043d\u0456\u0441\u0442\u044c \u0432\u0438\u043a\u043e\u043d\u0430\u043d\u043d\u044f \u0437 \u0432\u0438\u043c\u043e\u0433\u043e\u044e "renew request: true".
|
||||
INVALID_REQUEST=\u041e\u0431\u0438\u0434\u0432\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 'service' \u0456 'ticket' \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b.
|
||||
INVALID_TICKET="ticket" ''{0}'' \u043d\u0435 \u0440\u043e\u0437\u043f\u0456\u0437\u043d\u0430\u043d\u043e.
|
||||
INVALID_SERVICE="ticket" ''{0}'' \u043d\u0435 \u0432\u0456\u0434\u043f\u043e\u0432\u0456\u0434\u0430\u0454 \u043d\u0430\u0434\u0430\u043d\u043e\u043c\u0443 \u0441\u0435\u0440\u0432\u0456\u0441\u0443.
|
||||
management.services.link.logout=\u0412\u0438\u0439\u0442\u0438
|
||||
management.services.title=\u0423\u043f\u0440\u0430\u0432\u043b\u0456\u043d\u043d\u044f \u0441\u0435\u0440\u0432\u0456\u0441\u0430\u043c\u0438
|
||||
management.services.status.deleted={0} \u0443\u0441\u043f\u0456\u0448\u043d\u043e \u0432\u0438\u0434\u0430\u043b\u0435\u043d\u0438\u0439.
|
||||
management.services.service.warn=CAS \u043f\u0440\u0430\u0446\u044e\u0454 \u0432 "\u0432\u0456\u0434\u043a\u0440\u0438\u0442\u043e\u043c\u0443" \u0440\u0435\u0436\u0438\u043c\u0456, \u0442\u043e\u043c\u0443 \u0449\u043e \u0436\u043e\u0434\u0435\u043d \u0441\u0435\u0440\u0432\u0456\u0441 \u043d\u0435 \u043d\u0430\u043b\u0430\u0448\u0442\u043e\u0432\u0430\u043d\u0438\u0439 \u0437\u0430 \u0434\u043e\u043f\u043e\u043c\u043e\u0433\u043e\u044e \u0446\u0456\u0454\u0457 \u0443\u0442\u0438\u043b\u0456\u0442\u0438. \u041f\u0456\u0441\u043b\u044f \u043d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f, CAS \u0431\u0456\u043b\u044c\u0448 \u043d\u0435 \u0431\u0443\u0434\u0435 \u0444\u0443\u043d\u043a\u0446\u0456\u043e\u043d\u0443\u0432\u0430\u0442\u0438 \u0443 \u0432\u0456\u0434\u043a\u0440\u0438\u0442\u043e\u043c\u0443 \u0440\u0435\u0436\u0438\u043c\u0456, \u0442\u043e\u043c\u0443 \u0432\u0430\u043c \u043f\u043e\u0442\u0440\u0456\u0431\u043d\u043e \u0431\u0443\u0434\u0435 \u0437\u0430\u0440\u0435\u0454\u0441\u0442\u0440\u0443\u0432\u0430\u0442\u0438 \u0442\u0443\u0442 \u0443\u0441\u0456 \u0434\u043e\u0434\u0430\u0442\u043a\u0438, \u044f\u043a\u0456 \u0431\u0443\u0434\u0443\u0442\u044c \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0432\u0430\u0442\u0438 CAS \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0456\u0457. \u042f\u043a\u0449\u043e \u0432\u0438 \u043f\u043b\u0430\u043d\u0443\u0454\u0442\u0435 \u0446\u0435 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0432\u0430\u0442\u0438, \u0441\u043f\u043e\u0447\u0430\u0442\u043a\u0443 \u043f\u043e\u0442\u0440\u0456\u0431\u043d\u043e \u0414\u041e\u0414\u0410\u0422\u0418 \u0421\u0410\u041c \u0421\u0415\u0420\u0412\u0406\u0421. URL \u0441\u0435\u0440\u0432\u0456\u0441\u0443 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0456\u043d\u043d\u044f <strong>"{0}"</strong>.
|
||||
management.services.add.button.cancel=\u0421\u043a\u0430\u0441\u0443\u0432\u0430\u043d\u043d\u044f
|
||||
management.services.add.button.save=\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438 \u0437\u043c\u0456\u043d\u0438
|
||||
management.services.add.instructions=\u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430 \u043f\u0435\u0440\u0435\u043a\u043e\u043d\u0430\u0439\u0442\u0435\u0441\u044f, \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u0456 \u0447\u0438 \u0437\u043c\u0456\u043d\u0438, \u043d\u0430\u0442\u0438\u0441\u043d\u0443\u0432\u0448\u0438 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 "\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438 \u0437\u043c\u0456\u043d\u0438" \u0432\u043d\u0438\u0437\u0443 \u0441\u0442\u043e\u0440\u0456\u043d\u043a\u0438
|
||||
management.services.add.property.attributes=\u0410\u0442\u0442\u0440\u0456\u0431\u0443\u0442\u0438
|
||||
management.services.add.property.description=\u041e\u043f\u0438\u0441
|
||||
management.services.add.property.evaluationOrder=\u041f\u043e\u0440\u044f\u0434\u043e\u043a
|
||||
management.services.add.property.ignoreAttributes=\u041d\u0435 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0432\u0430\u0442\u0438 \u043a\u0435\u0440\u0443\u0432\u0430\u043d\u043d\u044f \u0430\u0442\u0442\u0440\u0456\u0431\u0443\u0442\u043e\u0432
|
||||
management.services.add.property.name=\u0406\u043c'\u044f
|
||||
management.services.add.property.serviceUrl=URL \u0441\u0435\u0440\u0432\u0456\u0441\u0443
|
||||
management.services.add.property.serviceUrl.instructions=\u0412\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0439\u0442\u0435 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u0456 \u0432\u0438\u0440\u0430\u0437\u0438 \u0432 \u0441\u0442\u0438\u043b\u0456 Ant
|
||||
management.services.add.property.status=\u0421\u0442\u0430\u0442\u0443\u0441
|
||||
management.services.add.property.status.allowedToProxy=\u0414\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u0438 \u043f\u0440\u043e\u043a\u0441\u0456\u0440\u043e\u0432\u0430\u043d\u0456\u0435
|
||||
management.services.add.property.status.anonymousAccess=\u0410\u043d\u043e\u043d\u0456\u043c\u043d\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f
|
||||
management.services.add.property.status.enabled=\u0410\u043a\u0442\u0438\u0432\u043d\u043e
|
||||
management.services.add.property.status.ssoParticipant=\u0423\u0447\u0430\u0441\u043d\u0438\u043a SSO
|
||||
management.services.add.property.themeName=\u0406\u043c'\u044f \u0442\u0435\u043c\u0438
|
||||
management.services.manage.action.delete=\u0432\u0438\u0434\u0430\u043b\u0438\u0442\u0438
|
||||
management.services.manage.action.edit=\u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438
|
||||
management.services.manage.label.allowedToProxy=\u0414\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u0438 \u043f\u0440\u043e\u043a\u0441\u0456\u0440\u043e\u0432\u0430\u043d\u0456\u0435
|
||||
management.services.manage.label.enabled=\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u043e
|
||||
management.services.manage.label.name=\u041d\u0430\u0437\u0432\u0430 \u0441\u0435\u0440\u0432\u0456\u0441\u0443
|
||||
management.services.manage.label.serviceUrl=URL \u0441\u0435\u0440\u0432\u0456\u0441\u0443
|
||||
management.services.manage.label.ssoParticipant=\u0423\u0447\u0430\u0441\u043d\u0438\u043a SSO
|
||||
management.services.status.notdeleted=\u0421\u0435\u0440\u0432\u0456\u0441 \u043d\u0435 \u043c\u043e\u0436\u0435 \u0431\u0443\u0442\u0438 \u0432\u0438\u0434\u0430\u043b\u0435\u043d\u0438\u0439.
|
||||
manageServiceView=\u0423\u043f\u0440\u0430\u0432\u043b\u0456\u043d\u043d\u044f \u0441\u0435\u0440\u0432\u0456\u0441\u0430\u043c\u0438
|
||||
registeredService.serviceId.exists=\u0421\u0435\u0440\u0432\u0456\u0441 \u0437 \u0442\u0430\u043a\u0438\u043c URL \u0432\u0436\u0435 \u0456\u0441\u043d\u0443\u0454
|
||||
screen.blocked.header=\u0414\u043e\u0441\u0442\u0443\u043f \u0437\u0430\u0431\u043e\u0440\u043e\u043d\u0435\u043d\u043e
|
||||
screen.blocked.message=\u0412\u0438 \u0437\u0430\u043d\u0430\u0434\u0442\u043e \u0431\u0430\u0433\u0430\u0442\u043e \u0440\u0430\u0437\u0456\u0432 \u0432\u0432\u043e\u0434\u0438\u043b\u0438 \u043d\u0435\u0432\u0456\u0440\u043d\u0438\u0439 \u043f\u0430\u0440\u043e\u043b\u044c. \u0412\u0430\u0448 \u0430\u043a\u0430\u0443\u043d\u0442 \u0437\u0430\u0431\u043b\u043e\u043a\u043e\u0432\u0430\u043d\u0438\u0439.
|
||||
screen.service.sso.error.header=\u0414\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0443 \u0434\u043e \u0441\u0435\u0440\u0432\u0456\u0441\u0443 \u043f\u043e\u0442\u0440\u0456\u0431\u043d\u0430 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u0430 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0456\u044f
|
||||
screen.service.sso.error.message=\u0412\u0438 \u043d\u0430\u043c\u0430\u0433\u0430\u0454\u0442\u0435\u0441\u044f \u043e\u0442\u0440\u0438\u043c\u0430\u0442\u0438 \u0434\u043e\u0441\u0442\u0443\u043f \u0434\u043e \u0441\u0435\u0440\u0432\u0456\u0441\u0443, \u044f\u043a\u0438\u0439 \u0432\u0438\u043c\u0430\u0433\u0430\u0454 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0456\u044e \u0431\u0435\u0437 \u043f\u043e\u0432\u0442\u043e\u0440\u0456\u0432 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0456\u0457. \u0421\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 <a href="{0}">\u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0443\u0432\u0430\u0442\u0438\u0441\u044f \u0437\u043d\u043e\u0432\u0443</a>.
|
||||
addServiceView=\u0414\u043e\u0434\u0430\u0442\u0438 \u043d\u043e\u0432\u0438\u0439 \u0441\u0435\u0440\u0432\u0456\u0441
|
||||
application.errors.global=\u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0432\u0438\u043f\u0440\u0430\u0432\u0442\u0435 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0456 \u043d\u0438\u0436\u0447\u0435 \u043f\u043e\u043c\u0438\u043b\u043a\u0438
|
||||
editServiceView=\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0441\u0435\u0440\u0432\u0456\u0441
|
||||
viewStatisticsView=\u041f\u043e\u0434\u0438\u0432\u0438\u0442\u0438\u0441\u044f \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443
|
||||
@@ -0,0 +1,48 @@
|
||||
#Author: Faizan Ahmed (Rutgers University)
|
||||
#Since 3.0.5
|
||||
|
||||
#Welcome Screen Messages
|
||||
|
||||
|
||||
screen.welcome.welcome=CAS ko online lany par Mubark baad! Default Tasdeek karney wala aap ki tasdeek iss soorat main karay ga agar password wo hi hoo jo user name hay. Aiye, aur try ki jiyay.
|
||||
screen.welcome.security=Security ki wajoohat ki bina par aap mehrbani farma kar apnay web browser say Log Out aur Exit zaroor ki jiyay jub aap aisi services isstamal kar chookay hoon jo tasdeek chahti hoon.
|
||||
screen.welcome.instructions=Apni Apereo ki NetID aur Password enter ki jiyay.
|
||||
screen.welcome.label.netid=<span class="accesskey">N</span>etID:
|
||||
screen.welcome.label.netid.accesskey=n
|
||||
screen.welcome.label.password=<span class="accesskey">P</span>assword:
|
||||
screen.welcome.label.password.accesskey=p
|
||||
screen.welcome.label.warn=Mujay doosri sites main login karnay say pahlay <span class="accesskey">K</span>habardar karain.
|
||||
screen.welcome.label.warn.accesskey=k
|
||||
screen.welcome.button.login=LOGIN
|
||||
screen.welcome.button.clear=CLEAR
|
||||
|
||||
#Confirmation Screen Messages
|
||||
screen.confirmation.message=<a href="{0}">Yahan Click</a> karain agar app application main dakhil hona chahtay hain.
|
||||
|
||||
#Generic Success Screen Messages
|
||||
screen.success.header=Log In Kamyab
|
||||
screen.success.success=Aap kamyabi say Centeral Authentication Service main login hoo chokay hain.
|
||||
screen.success.security=Security ki wajoohat ki bina par jub aap aisi services isstamal kar chookay hoon jo tasdeek chahti hoon tou baraye mehrbani apnay web browser say Log Out aur Exit zaroor ki jiyay
|
||||
|
||||
#Logout Screen Messages
|
||||
screen.logout.header=Logout Kamyab
|
||||
screen.logout.success=Aap kamyabi say Centeral Authentication Service say logout hoo chokay hain.
|
||||
screen.logout.security=Security ki wajoohat ki bina par apnay web browser say exit karain.
|
||||
|
||||
|
||||
|
||||
#Service Error Messages
|
||||
screen.service.error.header=Bay Sanud Service
|
||||
screen.service.error.message=Aap jiss service kay liay tasdeek ki kooshush kar rahay thay woo service CAS istamal karnay ki mijaz nahi.
|
||||
|
||||
|
||||
username.required=Username ka khana por karna lazmi hay.
|
||||
password.required=Password ka khana por karna lazmi hay.
|
||||
error.authentication.credentials.bad=Aap ka mohya kia howa waseeka (parteet puter) ki tasdeek karna momkin nahi.
|
||||
error.authentication.credentials.unsupported=Aap kay mohya kiay howay waseeka (parteet puter) ko CAS support nahi karta.
|
||||
|
||||
INVALID_REQUEST_PROXY='pgt' aur 'targetService' parameters doonon lazmi hain.
|
||||
INVALID_TICKET_SPEC=Ticket toseek ki tasreeh par poora nahi utri. Momkin gultiyoon main shamil, hoo sakta hay kay proxy ticket ki toseek ki kooshish Service ticket kay toseek kaninda say ki gai hoo, yaa 'renew true request' say iss ki mitabkat na hooti hoo.
|
||||
INVALID_REQUEST='service' aur 'ticket' parameters doonon lazmi hain.
|
||||
INVALID_TICKET=ticket ''{0}'' ki shnakhat nahi hoo saki.
|
||||
INVALID_SERVICE=ticket ''{0}'' ki mitabkat mohya karda service say nahi hoo saki.
|
||||
@@ -0,0 +1,241 @@
|
||||
# Author: Thanh Pham <tienthanh.dqc@gmail>
|
||||
|
||||
# Welcome Screen Messages
|
||||
screen.welcome.welcome = Cảm ơn bạn đến và sử dụng dịch vụ xác thực tập trung
|
||||
screen.welcome.security = Mẹo: Hãy <a href="logout">đăng xuất</a> sau khi hoàn tất sử dụng tài khoản
|
||||
screen.welcome.instructions = Nhập tên người dùng và mật khẩu của bạn
|
||||
screen.welcome.label.netid = <span class="accesskey">T</span>ài khoản:
|
||||
screen.welcome.label.netid.accesskey = t
|
||||
screen.welcome.label.password = <span class="accesskey">M</span>ật khẩu:
|
||||
screen.welcome.label.password.accesskey = m
|
||||
screen.welcome.label.publicstation = Máy tính hiện tại không phải máy tính cá nhân của tôi.
|
||||
screen.welcome.label.warn = <span class="accesskey">C</span>ảnh báo tôi!
|
||||
screen.welcome.label.warn.accesskey = c
|
||||
screen.welcome.label.warnremove = Đừng cảnh báo tôi nữa
|
||||
screen.welcome.button.login = ĐĂNG NHẬP
|
||||
screen.welcome.button.logout = ĐĂNG XUẤT
|
||||
screen.welcome.button.loginwip = Xin đợi một chút...
|
||||
screen.welcome.button.register = Ghi danh
|
||||
screen.welcome.button.print = In
|
||||
screen.welcome.button.clear = XÓA
|
||||
screen.welcome.label.loginwith = Hoặc đăng nhập bằng:
|
||||
|
||||
screen.cookies.disabled.title = Cookie của trình duyệt bị vô hiệu hóa
|
||||
screen.cookies.disabled.message = Trình duyệt của bạn không bật cookie. Bạn không thể đăng nhập nếu không bật cookies.
|
||||
|
||||
screen.pm.button.submit = GỬI
|
||||
screen.pm.button.cancel = HỦY
|
||||
screen.pm.button.forgotpwd = <a href="https://example.com/forgot_password.php"> Quên mật khẩu của bạn? </a>
|
||||
screen.pm.button.resetPassword = Đặt lại mật khẩu của bạn
|
||||
screen.pm.reset.username = Tên đăng nhập:
|
||||
screen.pm.reset.heading = Đặt lại mật khẩu không thành công
|
||||
screen.pm.reset.message = Chúng tôi không thể xử lý yêu cầu đặt lại mật khẩu của bạn tại thời điểm này.
|
||||
screen.pm.reset.qstitle = Trả lời các câu hỏi bảo mật
|
||||
screen.pm.reset.qsmsg = Chào mừng <strong>{0}</strong>. Trước khi bạn có thể đặt lại mật khẩu, bạn phải trả lời các câu hỏi bảo mật sau.
|
||||
screen.pm.reset.sentInstructions = Bạn sẽ sớm nhận được email với các hướng dẫn sau để đặt lại mật khẩu. Vui lòng đặt lại mật khẩu trước khi phiên làm việc hết hạn.
|
||||
screen.pm.reset.sent = Hướng dẫn Đặt lại mật khẩu Gửi thành công.
|
||||
screen.pm.reset.title = Đặt lại mật khẩu của bạn
|
||||
screen.pm.reset.instructions = Vui lòng cung cấp tên người dùng của bạn. Bạn sẽ nhận được email với các hướng dẫn tiếp theo về cách đặt lại mật khẩu.
|
||||
screen.aup.button.accept = CHẤP NHẬN
|
||||
screen.aup.button.cancel = Hủy
|
||||
|
||||
screen.consent.confirm = XÁC NHẬN
|
||||
screen.consent.cancel = Hủy
|
||||
screen.consent.title = Sự đồng ý thuộc tính
|
||||
screen.consent.attributes = Thuộc tính
|
||||
screen.consent.options = Tùy chọn
|
||||
screen.consent.attributes.header = Các thuộc tính sau sẽ được phát hành cho <strong>[{0}]</strong>:
|
||||
screen.consent.attributes.attribute = Thuộc tính
|
||||
screen.consent.attributes.values = Giá trị (s)
|
||||
screen.consent.attributes.data.info = Hiển thị _START_ tới _END_ của _TOTAL_ mục nhập
|
||||
screen.consent.options.header = Làm thế nào để tôi được nhắc nhở lại một lần nữa?
|
||||
screen.consent.options.always = <strong>Mỗi lần</strong>
|
||||
screen.consent.options.desc.always = Hiển thị màn hình sự đồng ý mỗi khi tôi cố gắng đăng nhập vào {0}.
|
||||
screen.consent.options.attributename = <strong>Tên thuộc tính</strong>
|
||||
screen.consent.options.desc.attributename = Hiển thị màn hình sự đồng ý, nếu một thuộc tính được thêm hoặc xoá khỏi bộ sưu tập thuộc tính được phát hành đến {0}.
|
||||
screen.consent.options.attributevalue = <strong>Giá trị thuộc tính</strong>
|
||||
screen.consent.options.desc.attributevalue.intro = Hiển thị màn hình thỏa thuận, nếu:
|
||||
screen.consent.options.desc.attributevalue.first = Một thuộc tính mới được ủy quyền để phát hành tới {0}.
|
||||
screen.consent.options.desc.attributevalue.second = Thuộc tính được xóa khỏi bó thuộc tính đã phát hành trước đó đến {0}.
|
||||
screen.consent.options.desc.attributevalue.third = Giá trị của thuộc tính được phép cho việc giải phóng thành{0}đã thay đổi.
|
||||
screen.consent.options.reminder.header = Tôi nên nhắc lại bao lâu để đồng ý?
|
||||
screen.consent.options.reminder.expl = Hiển thị màn hình sự đồng ý, làm lời nhắc, trong trường hợp không có sự thay đổi đối với bộ sưu tập thuộc tính được phát hành cho {0}.
|
||||
screen.consent.options.timeunit.seconds = Giây
|
||||
screen.consent.options.timeunit.minutes = Phút
|
||||
screen.consent.options.timeunit.hours = Giờ
|
||||
screen.consent.options.timeunit.days = Ngày
|
||||
screen.consent.options.timeunit.weeks = Tuần
|
||||
screen.consent.options.timeunit.months = Tháng
|
||||
screen.consent.options.timeunit.years = Năm
|
||||
|
||||
screen.consent.review.header = Xem lại sự đồng ý thuộc tính
|
||||
screen.consent.review.loading = Đang tải quyết định về sự chấp thuận ...
|
||||
screen.consent.review.noconsentdecisions = Không có quyết định chấp thuận nào được đăng ký cho bạn.
|
||||
screen.consent.review.success = Quyết định chấp thuận đã bị xóa thành công.
|
||||
screen.consent.review.error = Có lỗi!
|
||||
screen.consent.review.confirm = Xóa quyết định chấp thuận cho [{}]?
|
||||
screen.consent.review.yes = Có
|
||||
screen.consent.review.no = Không
|
||||
screen.consent.review.date = Ngày
|
||||
screen.consent.review.service = Dịch vụ
|
||||
screen.consent.review.delete = XÓA BỎ
|
||||
screen.consent.review.createddate = Ngày tạo:
|
||||
screen.consent.review.reminder = Nhắc nhở:
|
||||
screen.consent.review.option = Tùy chọn:
|
||||
screen.consent.review.options.attributename = Tên thuộc tính
|
||||
screen.consent.review.options.attributevalue = Giá trị thuộc tính
|
||||
screen.consent.review.options.always = Luôn luôn
|
||||
screen.consent.review.options.desc.always = Hiển thị màn hình sự đồng ý mỗi khi tôi cố gắng đăng nhập
|
||||
screen.consent.review.options.desc.attributename = Hiển thị màn hình sự đồng ý, nếu một thuộc tính được thêm hoặc xoá khỏi bộ sưu tập thuộc tính được phát hành.
|
||||
screen.consent.review.options.desc.attributevalue = Hiển thị màn hình sự đồng ý, nếu 1) một thuộc tính mới được phép phát hành, 2) một thuộc tính bị xóa khỏi bó thuộc tính đã được phát hành trước đó, 3) giá trị của thuộc tính được cho phép đã được giải phóng đã thay đổi.
|
||||
screen.consent.review.attributes = Thuộc tính:
|
||||
screen.consent.review.data.search = Tìm kiếm
|
||||
screen.consent.review.data.zerorecords = Không tìm thấy quyết định phù hợp
|
||||
screen.consent.review.data.info = Hiển thị _START_ tới _END_ của _TOTAL_ mục nhập
|
||||
screen.consent.review.data.infofiltered = (được lọc từ _MAX_ tổng số mục)
|
||||
screen.consent.review.data.infoempty = Không có quyết định nào để hiển thị
|
||||
screen.consent.review.logout.success = Bạn đã đăng xuất thành công trên trang Nhận xét về Chấp thuận. Bạn hoàn toàn <a href="../logout"> đăng xuất </a> của dịch vụ xác thực tập trung và kết thúc phiên đăng nhập một lần của bạn.
|
||||
|
||||
screen.nonsecure.title = Kết nối không an toàn
|
||||
screen.nonsecure.message = Kết nối mạng hiện tại không an toàn.
|
||||
|
||||
screen.defaultauthn.title = Xác thực tĩnh
|
||||
screen.defaultauthn.heading = Chú ý! CAS đang chạy ở chế độ danh sách người dùng tĩnh (hard code)
|
||||
logo.title = Trang chủ
|
||||
copyright = Powered by PT Studio
|
||||
screen.capslock.on = Phím CAPSLOCK đã được bật!
|
||||
screen.button.continue = Tiếp tục
|
||||
screen.post.response.message = Bạn đang được chuyển hướng đến{0}.
|
||||
|
||||
screen.interrupt.title = Xác thực bị gián đoạn
|
||||
screen.interrupt.message = Không thể thiết lập một phiên đăng nhập cho <strong>{0}</strong>.
|
||||
|
||||
|
||||
screen.mdui.infolink.text=<a href="{0}" target="_blank">Thông tin về ứng dụng này</a>.
|
||||
screen.mdui.privacylink.text=<a href="{0}" target="_blank">Chính sách bảo mật</a>.
|
||||
|
||||
screen.interrupt.btn.proceed = Tiếp tục
|
||||
screen.interrupt.btn.cancel = Hủy
|
||||
|
||||
# Generic Error Pages 401, 404, 500, etc
|
||||
# #######################################
|
||||
screen.error.page.heading = Lỗi
|
||||
screen.error.page.accessdenied = Truy cập bị từ chối
|
||||
screen.error.page.permissiondenied = Bạn không có quyền xem trang này.
|
||||
screen.error.page.requestunsupported = Loại yêu cầu hoặc cú pháp không được hỗ trợ.
|
||||
screen.error.page.loginagain = Đăng nhập lại
|
||||
screen.error.page.notfound = Không tìm thấy Trang
|
||||
screen.error.page.doesnotexist = Trang bạn đang cố gắng truy cập không tồn tại vào lúc này.
|
||||
screen.error.page.authdenied = Ủy quyền đã bị từ chối
|
||||
|
||||
# Remember-Me Authentication
|
||||
screen.rememberme.checkbox.title = Nhớ tôi
|
||||
|
||||
# Gua
|
||||
screen.gua.confirm.message = Nếu bạn không nhận ra hình ảnh này là của bạn, Vui lòng bỏ qua.
|
||||
|
||||
# Blocked Errors Page
|
||||
screen.blocked.header = Truy cập bị từ chối
|
||||
screen.blocked.message = Bạn đã nhập sai mật khẩu cho người dùng quá nhiều lần.
|
||||
AbstractAccessDecisionManager.accessDenied = Bạn không được phép truy cập tài nguyên này. Liên hệ với quản trị viên Elearning của bạn để biết thêm thông tin.
|
||||
|
||||
# Confirmation Screen Messages
|
||||
screen.confirmation.message = Bạn yêu cầu được cảnh báo trước khi đăng nhập vào các ứng dụng. Làm ơn Tiến hành.
|
||||
screen.authentication.warning = Xác thực đã được cảnh báo
|
||||
|
||||
# Generic Success Screen Messages
|
||||
screen.success.header = Đăng nhập thành công
|
||||
screen.success.success = Chào <strong>{0}</strong> đã đăng nhập thành công vào dịch vụ xác thực tập trung. Tuy nhiên, bạn đang thấy trang này vì hệ thống không biết cần chuyển hướng bạn đi đâu. Kiểm tra lại yêu cầu xác thực và đảm bảo rằng một website vừa chuyển hướng bạn tới đây.
|
||||
screen.success.security = Khi bạn hoàn tất, vì lý do bảo mật, vui lòng <a href="logout">đăng xuất</a> và thoát trình duyệt web của bạn.
|
||||
|
||||
# Logout Screen Messages
|
||||
screen.logout.confirm.header = Bạn có muốn đăng xuất hoàn toàn không?
|
||||
screen.logout.confirm.text = Một ứng dụng có thể đã chuyển hướng bạn đến dịch vụ xác thực tập trung để hoàn toàn đăng xuất và phá hủy phiên đăng nhập một lần của bạn. Nếu bạn chọn đăng xuất, bạn sẽ được yêu cầu cung cấp lại thông tin xác thực và xác nhận lại khi bạn cố gắng truy cập một ứng dụng. <P> <p> <br> Bạn có muốn tiếp tục không?
|
||||
screen.logout.header = Đăng xuất thành công
|
||||
screen.logout.success = Bạn đã đăng xuất thành công khỏi dịch vụ xác thực tập trung. Bạn có thể <a href="login"> đăng nhập </a> lại.
|
||||
screen.logout.fc.success = Bạn đã đăng xuất thành công khỏi dịch vụ xác thực tập trung. Cho phép đăng xuất một lần được kích hoạt với CAS, danh sách dưới đây của ứng dụng <strong>chỉ được thông báo</strong> để đăng xuất bạn và phá hủy phiên người dùng của bạn. Hãy nhớ rằng đây chỉ là một thông báo chứ không phải là sự đảm bảo. Chính ứng dụng này sẽ tôn trọng các thông báo này và thực hiện đúng hành động để đăng xuất bạn.
|
||||
screen.logout.security = Vì lý do bảo mật, thoát khỏi trình duyệt web của bạn.
|
||||
screen.service.sso.error.header = Yêu cầu đăng nhập để truy cập Dịch vụ này
|
||||
screen.service.sso.error.message = Bạn đã cố truy cập dịch vụ yêu cầu xác thực mà không cần xác thực lại. Hãy thử xác minh lại </a>.
|
||||
screen.service.required.message = Bạn đã cố gắng xác thực mà không xác định ứng dụng đích. Vui lòng kiểm tra lại yêu cầu và thử lại.
|
||||
captchaError = xác nhận reCAPTCHA không thành công.
|
||||
username.required = Tên đăng nhập là một trường bắt buộc.
|
||||
password.required = Mật khẩu là một trường bắt buộc.
|
||||
|
||||
# Password Management
|
||||
confirmedPassword.required = Mật khẩu phải được xác nhận.
|
||||
pm.passwordsMustMatch = Mật khẩu được cung cấp không khớp.
|
||||
pm.passwordFailedCriteria = Cung cấp mật khẩu không thỏa mãn chính sách bảo mật mật khẩu. Vui lòng thử lại.
|
||||
pm.updateFailure = Không thể sửa đổi mật khẩu tài khoản. Vui lòng thử lại.
|
||||
|
||||
# Authentication failure messages
|
||||
authenticationFailure.AccountDisabledException = Tài khoản này đã bị vô hiệu hóa.
|
||||
authenticationFailure.AccountLockedException = Tài khoản này đã bị khóa.
|
||||
authenticationFailure.AccountExpiredException = Tài khoản này đã hết hạn và không được đăng nhập tại thời điểm này.
|
||||
authenticationFailure.CredentialExpiredException = Mật khẩu của bạn đã hết hạn.
|
||||
authenticationFailure.InvalidLoginLocationException = Bạn không thể đăng nhập từ máy trạm này.
|
||||
authenticationFailure.InvalidLoginTimeException = Tài khoản của bạn bị cấm đăng nhập tại thời điểm này.
|
||||
authenticationFailure.AccountNotFoundException = Sai tài khoản hoặc mật khẩu
|
||||
authenticationFailure.FailedLoginException = Sai tài khoản hoặc mật khẩu
|
||||
authenticationFailure.SurrogateAuthenticationException = Bạn không được ủy quyền mạo nhận người dùng đã chỉ định tại thời điểm này.
|
||||
authenticationFailure.AccountPasswordMustChangeException = Mật khẩu tài khoản của bạn đã hết hạn và phải được thay đổi.
|
||||
authenticationFailure.UnauthorizedServiceForPrincipalException = Đã từ chối truy cập dịch vụ do các đặc quyền bị thiếu.
|
||||
authenticationFailure.UNKNOWN = Sai tài khoản hoặc mật khẩu
|
||||
authenticationFailure.AuthenticationException = Thông tin xác thực bị từ chối / không hợp lệ và cố gắng xác thực đã thất bại.
|
||||
INVALID_REQUEST_PROXY = Yêu cầu được định dạng không chính xác. Đảm bảo tất cả các tham số yêu cầu được mã hoá và bao gồm đúng.
|
||||
INVALID_TICKET_SPEC = Vé không xác nhận xác nhận đặc điểm kỹ thuật. Lỗi có thể xảy ra có thể bao gồm việc cố gắng xác thực một Phiếu Proxy qua Người kiểm tra dịch vụ hoặc không tuân theo yêu cầu gia hạn thực.
|
||||
INVALID_REQUEST = các thông số về dịch vụ và vé đều được yêu cầu
|
||||
INVALID_AUTHENTICATION_CONTEXT = Yêu cầu xác nhận cho [''{0}''] không thể được thỏa mãn. Yêu cầu là không được công nhận hoặc chưa được hoàn thành.
|
||||
INVALID_TICKET = Vé ''{0}'' không được công nhận
|
||||
INVALID_PROXY_GRANTING_TICKET = PGT đã tạo ra cho ST này. Không thể cấp nhiều hơn một PGT cho ST
|
||||
INVALID_SERVICE = Vé ''{0}'' không khớp với dịch vụ cung cấp. Dịch vụ gốc là '' {1} '' và dịch vụ được cung cấp là '' {2} ''.
|
||||
INVALID_PROXY_CALLBACK = Url gọi lại proxy được cung cấp ''{0}'' không thể được chứng thực. Hoặc ''{0}'' không thể đạt được, nó không được phép thực hiện chứng thực proxy.
|
||||
UNAUTHORIZED_SERVICE_PROXY = Dịch vụ được cung cấp ''{0}'' không được phép sử dụng xác thực proxy CAS.
|
||||
UNSATISFIED_AUTHN_POLICY = Truy cập dịch vụ bị từ chối do chính sách xác thực không hài lòng.
|
||||
screen.service.error.header = Từ chối chứng thực
|
||||
service.not.authorized.missing.attr = Bạn không được phép truy cập vào ứng dụng vì tài khoản của bạn thiếu các đặc quyền mà máy chủ CAS yêu cầu để xác thực vào dịch vụ này. Hãy thông báo cho phòng hỗ trợ của bạn.
|
||||
screen.service.error.message = Ứng dụng bạn đang cố gắng xác thực chưa đăng ký với dịch vụ xác thực tập trung. Liên hệ với quản trị viên Elearning để tìm hiểu làm thế nào bạn có thể đăng ký và tích hợp ứng dụng của bạn với dịch vụ xác thực tập trung.
|
||||
screen.service.empty.error.message = Ứng dụng này chưa đăng ký với dịch vụ xác thực tập trung
|
||||
|
||||
# Password policy
|
||||
password.expiration.warning = Mật khẩu của bạn sẽ hết hạn trong{0}ngày. Vui lòng <a href="{1}"> thay đổi mật khẩu của bạn </a> ngay bây giờ.
|
||||
password.expiration.loginsRemaining = Bạn còn{0}đăng nhập trước khi <strong> PHẢI </strong> thay đổi mật khẩu của bạn.
|
||||
screen.accountdisabled.heading = Tài khoản này đã bị vô hiệu hóa.
|
||||
screen.accountdisabled.message = Vui lòng liên hệ với quản trị viên hệ thống để lấy lại quyền truy cập.
|
||||
screen.accountlocked.heading = Tài khoản này đã bị khóa.
|
||||
screen.accountlocked.message = Vui lòng liên hệ với quản trị viên hệ thống để lấy lại quyền truy cập.
|
||||
screen.expiredpass.heading = Mật khẩu của bạn đã hết hạn.
|
||||
screen.expiredpass.message = Hãy <a href="https://example.com/forgot_password.php"> thay đổi mật khẩu của bạn </a>.
|
||||
screen.mustchangepass.heading = Bạn phải thay đổi mật khẩu.
|
||||
screen.mustchangepass.message = Hãy <a href="https://example.com/forgot_password.php"> thay đổi mật khẩu của bạn </a>.
|
||||
screen.badhours.heading = Tài khoản của bạn bị cấm đăng nhập tại thời điểm này.
|
||||
screen.badhours.message = Vui lòng thử lại sau.
|
||||
screen.authnblocked.heading = Cố gắng xác thực bị chặn.
|
||||
screen.authnblocked.message = Cố gắng xác thực của bạn là không tin cậy và không được phép từ máy trạm hiện tại của bạn.
|
||||
screen.risk.authnblocked.heading = Cố gắng xác thực bị chặn.
|
||||
screen.risk.authnblocked.message = Cố gắng xác thực của bạn là không tin cậy và không được phép từ máy trạm hiện tại của bạn.
|
||||
screen.badworkstation.heading = Bạn không thể đăng nhập từ máy trạm này.
|
||||
screen.badworkstation.message = Vui lòng liên hệ với quản trị viên hệ thống để lấy lại quyền truy cập.
|
||||
screen.button.changePassword = Đổi mật khẩu
|
||||
screen.pm.success.header = Thay đổi mật khẩu thành công
|
||||
screen.pm.success.message = Mật khẩu tài khoản của bạn đã được cập nhật thành công.
|
||||
screen.pm.confirmpsw = Xác nhận mật khẩu:
|
||||
screen.pm.enterpsw = Nhập mật khẩu:
|
||||
screen.pac4j.unauthz.pagetitle = Truy cập trái phép
|
||||
screen.pac4j.unauthz.gotoapp = Đi tới ứng dụng
|
||||
screen.pac4j.unauthz.login = Quay lại
|
||||
screen.pac4j.unauthz.heading = Truy cập trái phép
|
||||
screen.pac4j.unauthz.message = Yêu cầu xác thực đã bị từ chối / hủy bỏ, hoặc nhà cung cấp xác thực đã từ chối truy cập do quyền truy cập, vv Xem lại các bản ghi để tìm nguyên nhân gốc của vấn đề.
|
||||
|
||||
# Unavailable
|
||||
screen.unavailable.header = Lỗi CAS
|
||||
screen.unavailable.heading = CAS không thể xử lý yêu cầu này: "{0} : {1}"
|
||||
screen.unavailable.message = Đã xảy ra lỗi khi cố gắng hoàn thành yêu cầu của bạn. <strong> Vui lòng thông báo cho bàn hỗ trợ của bạn hoặc thử lại. </strong> <div> Apereo là một tổ chức quản lý phần mềm nguồn mở phi lợi nhuận. Phần mềm CAS là một dự án được tài trợ bởi Apereo và được bất cứ ai có thể tải về và sử dụng được. Tuy nhiên, Apereo không vận hành hệ thống của bất cứ ai sử dụng phần mềm và hầu hết các trường hợp thậm chí không biết ai đang sử dụng nó hoặc cách liên lạc với họ trừ khi họ là một phần tích cực của cộng đồng Apereo. <br /> </ br> Nếu bạn gặp sự cố khi đăng nhập bằng CAS, <strong> bạn sẽ cần liên hệ với nhân viên CNTT hoặc Bộ phận Trợ giúp của tổ chức để được hỗ trợ </strong>. <br/> <br/> Chúng tôi muốn chúng tôi có thể giúp bạn trực tiếp hơn. </ div>
|
||||
|
||||
# ####################################################################
|
||||
# Login View
|
||||
# ####################################################################
|
||||
# Resources Labels
|
||||
cas.login.pagetitle = Đăng nhập
|
||||
cas.login.resources.header = Liên kết
|
||||
cas.login.resources.dashboard = Bảng điều khiển
|
||||
@@ -0,0 +1,89 @@
|
||||
#Welcome Screen Messages
|
||||
|
||||
screen.welcome.welcome=\u6b22\u8fce\u6765\u5230\u4e2d\u592e\u8ba4\u8bc1\u7cfb\u7edf\u3002\u9ed8\u8ba4\u7684\u8ba4\u8bc1\u5904\u7406\u5668\u652f\u6301\u90a3\u4e9b\u7528\u6237\u540d\u7b49\u4e8e\u5bc6\u7801\u7684\u8d26\u53f7\uff0c\u5f00\u53d1\u8005\u53ef\u4ee5\u8bd5\u8bd5\u770b\u3002
|
||||
screen.welcome.security=\u51FA\u4E8E\u5B89\u5168\u8003\u8651\uFF0C\u4E00\u65E6\u60A8\u8BBF\u95EE\u8FC7\u90A3\u4E9B\u9700\u8981\u60A8\u63D0\u4F9B\u51ED\u8BC1\u4FE1\u606F\u7684\u5E94\u7528\u65F6\uFF0C\u8BF7\u64CD\u4F5C\u5B8C\u6210\u4E4B\u540E<a href="logout">\u767B\u51FA</a>\u5E76\u5173\u95ED\u6D4F\u89C8\u5668\u3002
|
||||
screen.welcome.instructions=\u8bf7\u8f93\u5165\u60a8\u7684\u7528\u6237\u540d\u548c\u5bc6\u7801.
|
||||
screen.welcome.label.netid=\u7528\u6237\u540d:
|
||||
screen.welcome.label.netid.accesskey=n
|
||||
screen.welcome.label.password=\u5bc6\u3000\u7801:
|
||||
screen.welcome.label.password.accesskey=p
|
||||
screen.welcome.label.warn=\u8f6c\u5411\u5176\u4ed6\u7ad9\u70b9\u524d\u63d0\u793a\u6211\u3002
|
||||
screen.welcome.label.warn.accesskey=w
|
||||
screen.welcome.button.login=\u767b\u5f55
|
||||
screen.welcome.button.clear=\u91cd\u7f6e
|
||||
|
||||
logo.title=\u8f6c\u5230Apereo\u7f51\u7ad9\u9996\u9875
|
||||
copyright=\u7248\u6743\u6240\u6709 © 2005–2012 Apereo, Inc. \u4fdd\u7559\u5168\u90e8\u6743\u5229\u3002
|
||||
|
||||
# Blocked Errors Page
|
||||
screen.blocked.header=\u8bbf\u95ee\u88ab\u62d2\u7edd
|
||||
screen.blocked.message=\u8f93\u9519\u5bc6\u7801\u6b21\u6570\u592a\u591a\uff0c\u8d26\u53f7\u88ab\u9501\u5b9a\u3002
|
||||
|
||||
#Confirmation Screen Messages
|
||||
screen.confirmation.message=\u5355\u51fb <a href="{0}">\u8fd9\u91cc</a> \uff0c\u4fbf\u80fd\u591f\u8bbf\u95ee\u5230\u76ee\u6807\u5e94\u7528\u3002
|
||||
|
||||
#Generic Success Screen Messages
|
||||
screen.success.header=\u767b\u5f55\u6210\u529f
|
||||
screen.success.success=\u60a8\u5df2\u7ecf\u6210\u529f\u767b\u5f55\u4e2d\u592e\u8ba4\u8bc1\u7cfb\u7edf\u3002
|
||||
screen.success.security=\u51FA\u4E8E\u5B89\u5168\u8003\u8651\uFF0C\u4E00\u65E6\u60A8\u8BBF\u95EE\u8FC7\u90A3\u4E9B\u9700\u8981\u60A8\u63D0\u4F9B\u51ED\u8BC1\u4FE1\u606F\u7684\u5E94\u7528\u65F6\uFF0C\u8BF7\u64CD\u4F5C\u5B8C\u6210\u4E4B\u540E<a href="logout">\u767B\u51FA</a>\u5E76\u5173\u95ED\u6D4F\u89C8\u5668\u3002
|
||||
|
||||
#Logout Screen Messages
|
||||
screen.logout.header=\u6ce8\u9500\u6210\u529f
|
||||
screen.logout.success=\u60a8\u5df2\u7ecf\u6210\u529f\u9000\u51faCAS\u7cfb\u7edf\uff0c\u8c22\u8c22\u4f7f\u7528\uff01
|
||||
screen.logout.security=\u51fa\u4e8e\u5b89\u5168\u8003\u8651\uff0c\u8bf7\u5173\u95ed\u60a8\u7684\u6d4f\u89c8\u5668\u3002
|
||||
|
||||
|
||||
screen.service.sso.error.header=\u5728\u8bbf\u95ee\u5230\u5230\u76ee\u6807\u670d\u52a1\u524d\uff0c\u4f60\u5fc5\u987b\u7ecf\u8fc7\u91cd\u65b0\u8ba4\u8bc1\u7684\u8003\u9a8c
|
||||
screen.service.sso.error.message=\u4f60\u6b63\u8bd5\u56fe\u8bbf\u95ee\u8981\u6c42\u91cd\u65b0\u8ba4\u8bc1\u7684\u670d\u52a1\u3002\u8bf7\u5c1d\u8bd5\u8fdb\u884c<a href="{0}">\u518d\u6b21\u8ba4\u8bc1</a>\u3002
|
||||
|
||||
|
||||
username.required=\u5fc5\u987b\u5f55\u5165\u7528\u6237\u540d\u3002
|
||||
password.required=\u5fc5\u987b\u5f55\u5165\u5bc6\u7801\u3002
|
||||
|
||||
# Authentication failure messages
|
||||
authenticationFailure.AccountDisabledException=\u8fd9\u4e2a\u8d26\u6237\u88ab\u7981\u7528\u4e86\u3002
|
||||
authenticationFailure.AccountLockedException=\u8fd9\u4e2a\u8d26\u6237\u88ab\u4e0a\u9501\u4e86\u3002
|
||||
authenticationFailure.CredentialExpiredException=\u4f60\u7684\u5bc6\u7801\u8fc7\u671f\u4e86\u3002
|
||||
authenticationFailure.InvalidLoginLocationException=\u4f60\u4e0d\u80fd\u4ece\u8fd9\u4e2a\u5de5\u4f5c\u7ad9\u767b\u5f55\u3002
|
||||
authenticationFailure.InvalidLoginTimeException=\u4f60\u7684\u8d26\u6237\u73b0\u5728\u88ab\u7981\u6b62\u767b\u5f55\u4e86\u3002
|
||||
authenticationFailure.AccountNotFoundException=\u8ba4\u8bc1\u4fe1\u606f\u65e0\u6548\u3002
|
||||
authenticationFailure.FailedLoginException=\u8ba4\u8bc1\u4fe1\u606f\u65e0\u6548\u3002
|
||||
authenticationFailure.UNKNOWN=\u8ba4\u8bc1\u4fe1\u606f\u65e0\u6548\u3002
|
||||
|
||||
INVALID_REQUEST_PROXY=\u5fc5\u987b\u540c\u65f6\u63d0\u4f9b'pgt'\u548c'targetService'\u53c2\u6570
|
||||
INVALID_TICKET_SPEC=\u6821\u9a8c\u7968\u6839\u5931\u8d25\u3002\u60a8\u53ef\u80fd\u91c7\u7528\u670d\u52a1\u7968\u6839\u6765\u6821\u9a8c\u4ee3\u7406\u7968\u6839\uff0c\u6216\u6ca1\u6709\u5c06renew\u8bbe\u4e3atrue\u3002
|
||||
INVALID_REQUEST=\u5fc5\u987b\u540c\u65f6\u63d0\u4f9b'service'\u548c'ticket'\u53c2\u6570
|
||||
INVALID_TICKET=\u672a\u80fd\u591f\u8bc6\u522b\u51fa\u76ee\u6807 ''{0}''\u7968\u6839
|
||||
INVALID_SERVICE=\u7968\u6839''{0}''\u4e0d\u7b26\u5408\u76ee\u6807\u670d\u52a1
|
||||
INVALID_PROXY_CALLBACK=\u6240\u63d0\u4f9b\u7684\u4ee3\u7406\u56de\u8c03\u7f51\u5740''{0}''\u4e0d\u80fd\u63d0\u4f9b\u8ba4\u8bc1\u3002
|
||||
UNAUTHORIZED_SERVICE_PROXY=\u6240\u63d0\u4f9b\u7684\u670d\u52a1''{0}''\u6ca1\u6709\u6743\u9650\u4f7f\u7528CAS\u4ee3\u7406\u7684\u8ba4\u8bc1\u65b9\u5f0f\u3002
|
||||
|
||||
screen.service.error.header=\u672a\u8ba4\u8bc1\u6388\u6743\u7684\u670d\u52a1
|
||||
screen.service.error.message=\u4e0d\u5141\u8bb8\u4f7f\u7528CAS\u6765\u8ba4\u8bc1\u60a8\u8bbf\u95ee\u7684\u76ee\u6807\u5e94\u7528\u3002
|
||||
screen.service.empty.error.message=CAS\u7684\u670d\u52a1\u8bb0\u5f55\u662f\u7a7a\u7684\uff0c\u6ca1\u6709\u5b9a\u4e49\u670d\u52a1\u3002 \
|
||||
\u5e0c\u671b\u901a\u8fc7CAS\u8fdb\u884c\u8ba4\u8bc1\u7684\u5e94\u7528\u7a0b\u5e8f\u5fc5\u987b\u5728\u670d\u52a1\u8bb0\u5f55\u4e2d\u660e\u786e\u5b9a\u4e49\u3002
|
||||
|
||||
# Password policy
|
||||
password.expiration.warning=\u4f60\u7684\u5bc6\u7801\u4f1a\u5728{0}\u5929\u5185\u8fc7\u671f\u3002\u8bf7\u7acb\u523b<a href="{1}">\u4fee\u6539\u4f60\u7684\u5bc6\u7801</a>\u3002
|
||||
password.expiration.loginsRemaining=\u5728<strong>\u5fc5\u987b</strong>\u4fee\u6539\u5bc6\u7801\u4e4b\u524d\uff0c\u4f60\u8fd8\u5269{0}\u6b21\u767b\u5f55\u3002
|
||||
screen.accountdisabled.heading=\u8fd9\u4e2a\u8d26\u6237\u5df2\u7ecf\u88ab\u7981\u7528\u4e86\u3002
|
||||
screen.accountdisabled.message=\u8bf7\u8054\u7cfb\u7cfb\u7edf\u7ba1\u7406\u5458\u6765\u91cd\u65b0\u83b7\u5f97\u8bbf\u95ee\u6743\u9650\u3002
|
||||
screen.accountlocked.heading=\u8fd9\u4e2a\u8d26\u6237\u5df2\u7ecf\u88ab\u9501\u4f4f\u4e86\u3002
|
||||
screen.accountlocked.message=\u8bf7\u8054\u7cfb\u7cfb\u7edf\u7ba1\u7406\u5458\u6765\u91cd\u65b0\u83b7\u5f97\u8bbf\u95ee\u6743\u9650\u3002
|
||||
screen.expiredpass.heading=\u4f60\u7684\u5bc6\u7801\u5df2\u7ecf\u8fc7\u671f\u4e86\u3002
|
||||
screen.expiredpass.message=\u8bf7<a href="{0}">\u4fee\u6539\u4f60\u7684\u5bc6\u7801</a>\u3002
|
||||
screen.mustchangepass.heading=\u4f60\u5fc5\u987b\u4fee\u6539\u4f60\u7684\u5bc6\u7801\u3002
|
||||
screen.mustchangepass.message=\u8bf7<a href="{0}">\u4fee\u6539\u4f60\u7684\u5bc6\u7801</a>\u3002
|
||||
screen.badhours.heading=\u73b0\u5728\u4f60\u7684\u8d26\u6237\u88ab\u7981\u6b62\u767b\u5f55\u4e86\u3002
|
||||
screen.badhours.message=\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002
|
||||
screen.badworkstation.heading=\u4f60\u4e0d\u80fd\u4ece\u8fd9\u4e2a\u5de5\u4f5c\u7ad9\u767b\u5f55\u3002
|
||||
screen.badworkstation.message=\u8bf7\u8054\u7cfb\u7cfb\u7edf\u7ba1\u7406\u5458\u6765\u91cd\u65b0\u83b7\u5f97\u8bbf\u95ee\u6743\u9650\u3002
|
||||
|
||||
# OAuth
|
||||
screen.oauth.confirm.header=\u6388\u6743
|
||||
screen.oauth.confirm.message=\u8981\u6388\u6743"{0}"\u8bbf\u95ee\u4f60\u5168\u90e8\u4e2a\u4eba\u4fe1\u606f\u5417\uff1f
|
||||
screen.oauth.confirm.allow=\u5141\u8bb8
|
||||
|
||||
# Unavailable
|
||||
screen.unavailable.heading=CAS\u65e0\u6cd5\u4f7f\u7528
|
||||
screen.unavailable.message=\u5728\u8bd5\u56fe\u5b8c\u6210\u4f60\u7684\u8bf7\u6c42\u65f6\u51fa\u9519\u3002\u8bf7\u901a\u77e5\u4f60\u7684\u6280\u672f\u652f\u6301\u6216\u91cd\u8bd5\u3002
|
||||
@@ -0,0 +1,50 @@
|
||||
#Welcome Screen Messages
|
||||
|
||||
|
||||
screen.welcome.welcome=\u6b61\u8fce\u4f86\u5230\u4e2d\u592e\u8a8d\u8b49\u7cfb\u7d71\u3002\u9ed8\u8a8d\u7684\u8a8d\u8b49\u8655\u7406\u5668\u652f\u6301\u90a3\u4e9b\u7528\u6236\u540d\u7b49\u65bc\u5bc6\u78bc\u7684\u8cec\u865f\uff0c\u958b\u767c\u8005\u53ef\u4ee5\u8a66\u8a66\u770b\u3002
|
||||
screen.welcome.security=\u51FA\u65BC\u5B89\u5168\u8003\u616E\uFF0C\u4E00\u65E6\u60A8\u8A2A\u554F\u904E\u90A3\u4E9B\u9700\u8981\u60A8\u63D0\u4F9B\u6191\u8B49\u4FE1\u606F\u7684\u61C9\u7528\u6642\uFF0C\u8ACB\u64CD\u4F5C\u5B8C\u6210\u4E4B\u5F8C<a href="logout">\u767B\u51FA</a>\u4E26\u95DC\u9589\u700F\u89BD\u5668\u3002
|
||||
screen.welcome.instructions=\u8acb\u8f38\u5165\u60a8\u7684\u7528\u6236\u540d\u548c\u5bc6\u78bc.
|
||||
screen.welcome.label.netid=\u7528\u6236\u540d:
|
||||
screen.welcome.label.netid.accesskey=n
|
||||
screen.welcome.label.password=\u5bc6\u3000\u78bc:
|
||||
screen.welcome.label.password.accesskey=p
|
||||
screen.welcome.label.warn=\u8f49\u5411\u5176\u4ed6\u7ad9\u9ede\u524d\u63d0\u793a\u6211\u3002
|
||||
screen.welcome.label.warn.accesskey=w
|
||||
screen.welcome.button.login=\u767b\u9304
|
||||
screen.welcome.button.clear=\u91cd\u7f6e
|
||||
|
||||
# Blocked Errors Page
|
||||
screen.blocked.header=\u8a2a\u554f\u88ab\u62d2\u7d55
|
||||
screen.blocked.message=\u8f38\u932f\u5bc6\u78bc\u6b21\u6578\u592a\u591a\uff0c\u8cec\u865f\u88ab\u9396\u5b9a\u3002
|
||||
|
||||
#Confirmation Screen Messages
|
||||
screen.confirmation.message=\u55ae\u64ca<a href="{0}">\u9019\u88e1</a> \uff0c\u4fbf\u80fd\u5920\u8a2a\u554f\u5230\u76ee\u6a19\u61c9\u7528\u3002
|
||||
|
||||
#Generic Success Screen Messages
|
||||
screen.success.header=\u767b\u9304\u6210\u529f
|
||||
screen.success.success=\u60a8\u5df2\u7d93\u6210\u529f\u767b\u9304\u4e2d\u592e\u8a8d\u8b49\u7cfb\u7d71\u3002
|
||||
screen.success.security=\u51FA\u65BC\u5B89\u5168\u8003\u616E\uFF0C\u4E00\u65E6\u60A8\u8A2A\u554F\u904E\u90A3\u4E9B\u9700\u8981\u60A8\u63D0\u4F9B\u6191\u8B49\u4FE1\u606F\u7684\u61C9\u7528\u6642\uFF0C\u8ACB\u64CD\u4F5C\u5B8C\u6210\u4E4B\u5F8C<a href="logout">\u767B\u51FA</a>\u4E26\u95DC\u9589\u700F\u89BD\u5668\u3002
|
||||
|
||||
#Logout Screen Messages
|
||||
screen.logout.header=\u8a3b\u92b7\u6210\u529f
|
||||
screen.logout.success=\u60a8\u5df2\u7d93\u6210\u529f\u9000\u51faCAS\u7cfb\u7d71\uff0c\u8b1d\u8b1d\u4f7f\u7528\uff01
|
||||
screen.logout.security=\u51fa\u65bc\u5b89\u5168\u8003\u616e\uff0c\u8acb\u95dc\u9589\u60a8\u7684\u700f\u89bd\u5668\u3002
|
||||
|
||||
|
||||
screen.service.sso.error.header=\u5728\u8a2a\u554f\u5230\u5230\u76ee\u6a19\u670d\u52d9\u524d\uff0c\u4f60\u5fc5\u9808\u7d93\u904e\u91cd\u65b0\u8a8d\u8b49\u7684\u8003\u9a57
|
||||
screen.service.sso.error.message=\u4f60\u6b63\u8a66\u5716\u8a2a\u554f\u8981\u6c42\u91cd\u65b0\u8a8d\u8b49\u7684\u670d\u52d9\u3002\u8acb\u5617\u8a66\u9032\u884c<a href="{0}">\u518d\u6b21\u8a8d\u8b49</a>\u3002
|
||||
|
||||
|
||||
username.required=\u5fc5\u9808\u9304\u5165\u7528\u6236\u540d\u3002
|
||||
password.required=\u5fc5\u9808\u9304\u5165\u5bc6\u78bc\u3002
|
||||
error.authentication.credentials.bad=\u60a8\u63d0\u4f9b\u7684\u6191\u8b49\u6709\u8aa4\u3002
|
||||
error.authentication.credentials.unsupported=CAS\u4e0d\u652f\u6301\u60a8\u63d0\u4f9b\u7684\u6191\u8b49\u3002
|
||||
|
||||
INVALID_REQUEST_PROXY=\u5fc5\u9808\u540c\u6642\u63d0\u4f9b'pgt'\u548c'targetService'\u53c3\u6578
|
||||
INVALID_TICKET_SPEC=\u6821\u9a57\u7968\u6839\u5931\u6557\u3002\u60a8\u53ef\u80fd\u63a1\u7528\u670d\u52d9\u7968\u6839\u4f86\u6821\u9a57\u4ee3\u7406\u7968\u6839\uff0c\u6216\u6c92\u6709\u5c07renew\u8a2d\u70batrue\u3002
|
||||
INVALID_REQUEST=\u5fc5\u9808\u540c\u6642\u63d0\u4f9b'service'\u548c'ticket'\u53c3\u6578
|
||||
INVALID_TICKET=\u672a\u80fd\u5920\u8b58\u5225\u51fa\u76ee\u6a19''{0}''\u7968\u6839
|
||||
INVALID_SERVICE=\u7968\u6839''{0}''\u4e0d\u7b26\u5408\u76ee\u6a19\u670d\u52d9
|
||||
|
||||
screen.service.error.header=\u672a\u8a8d\u8b49\u6388\u6b0a\u7684\u670d\u52d9
|
||||
screen.service.error.message=\u4e0d\u5141\u8a31\u4f7f\u7528CAS\u4f86\u8a8d\u8b49\u60a8\u8a2a\u554f\u7684\u76ee\u6a19\u61c9\u7528\u3002
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"@class" : "org.apereo.cas.services.RegexRegisteredService",
|
||||
"serviceId" : "^https://www.apereo.org",
|
||||
"name" : "Apereo",
|
||||
"theme" : "apereo",
|
||||
"id" : 10000002,
|
||||
"description" : "Apereo foundation sample service",
|
||||
"evaluationOrder" : 1
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"@class" : "org.apereo.cas.services.RegexRegisteredService",
|
||||
"serviceId" : "^(https|imaps)://.*",
|
||||
"name" : "HTTPS and IMAPS",
|
||||
"id" : 10000001,
|
||||
"description" : "This service definition authorizes all application urls that support HTTPS and IMAPS protocols.",
|
||||
"evaluationOrder" : 10000
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
@import 'https://fonts.googleapis.com/css?family=PT+Mono';
|
||||
#authnEvents .tabsContainer {
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
#authnEvents .btn .caret {
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
.tab-pane {
|
||||
padding: 20px 10px;
|
||||
border: 1px solid #ddd;
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
#container {
|
||||
width: 100%;
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
/**
|
||||
* Consent Review Styles
|
||||
*/
|
||||
@media only screen and (max-width: 855px) {
|
||||
#consentDecisions .consent-attributes td, #consentDecisions .consent-attributes th {
|
||||
padding: 4px;
|
||||
}
|
||||
}
|
||||
|
||||
#consent-decisions, #no-consent-decisions {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#no-consent-decisions div {
|
||||
margin-top: 2em;
|
||||
}
|
||||
|
||||
#consentDecisions > tbody > tr:not(.info) {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#consentDecisions .created-date .label {
|
||||
font-size: 85%;
|
||||
}
|
||||
|
||||
#consentDecisions .service-id {
|
||||
word-wrap: break-word;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
#consentDecisions .consent-attributes {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
#consentDecisions tr.info .btn-danger {
|
||||
float: right;
|
||||
padding: .5em;
|
||||
margin: 0 .2em 1em 0;
|
||||
}
|
||||
|
||||
#alertWrapper .btn {
|
||||
margin: 1em 1em 0 0;
|
||||
}
|
||||
|
||||
#logout {
|
||||
float: right;
|
||||
margin: 1em;
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
@import 'https://fonts.googleapis.com/css?family=PT+Mono';
|
||||
#loggingDashboard .tab-pane {
|
||||
padding: 20px 10px;
|
||||
border: 1px solid #ddd;
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
#loggingDashboard .btn .caret {
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
#loggersTable td.details-control span {
|
||||
cursor: pointer;
|
||||
font-family: "Font Awesome 5 Free";
|
||||
font-weight: 900;
|
||||
font-size: 10pt;
|
||||
color: #337ab7;
|
||||
}
|
||||
|
||||
#loggersTable td.details-control span:after {
|
||||
content: "\f067";
|
||||
}
|
||||
|
||||
#loggersTable tr.shown td.details-control span:after {
|
||||
content: "\f068";
|
||||
}
|
||||
|
||||
.additive {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.additive .glyphicon-ok {
|
||||
color: #5cb85c;
|
||||
}
|
||||
|
||||
.additive .glyphicon-remove {
|
||||
color: #d9534f;
|
||||
}
|
||||
|
||||
#logoutputarea {
|
||||
border: 0.1em solid #ccc;
|
||||
border-radius: 0.5em;
|
||||
padding: 1em;
|
||||
/* space on all directions */
|
||||
font-family: 'PT Mono', monospace;
|
||||
font-size: 1em;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: black;
|
||||
color: #39e600;
|
||||
}
|
||||
|
||||
main.container {
|
||||
max-width: 95%;
|
||||
}
|
||||
@@ -0,0 +1,110 @@
|
||||
/* --------------- CUSTOM STYLES */
|
||||
/**
|
||||
* SSO Sessions Styles
|
||||
*/
|
||||
#cas-sessions, #no-cas-sessions {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#no-cas-sessions div {
|
||||
margin-top: 2em;
|
||||
}
|
||||
|
||||
.ssoSessions #content {
|
||||
border-radius: 4px;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.ssoSessions .sorting_desc, .ssoSessions .sorting_asc {
|
||||
background-color: rgba(239, 239, 239, 0.8);
|
||||
}
|
||||
|
||||
.ssoSessions #removeAllSessionsButton.btn .badge {
|
||||
color: #000;
|
||||
padding-right: 9px;
|
||||
}
|
||||
|
||||
.ssoSessions .adminPanels {
|
||||
border-bottom: 1px solid #efefef;
|
||||
margin-bottom: 2em;
|
||||
margin-top: 1em;
|
||||
padding-bottom: 1em;
|
||||
}
|
||||
|
||||
.ssoSessions .adminPanels .adminPanels .panel-default > .panel-heading {
|
||||
background-color: #fff;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.ssoSessions .adminPanels .adminPanels .panel-default > .panel-heading h3 {
|
||||
font-family: 'Lato', sans-serif;
|
||||
font-weight: 300;
|
||||
font-size: 20pt;
|
||||
}
|
||||
|
||||
.ssoSessions .adminPanels .adminPanels .panel-default > .panel-heading::after {
|
||||
font-family: "Font Awesome 5 Free";
|
||||
font-weight: 900;
|
||||
position: absolute;
|
||||
top: -5px;
|
||||
right: 30px;
|
||||
font-size: 70pt;
|
||||
color: #153e50;
|
||||
opacity: 0.1;
|
||||
}
|
||||
|
||||
.ssoSessions td.details-control {
|
||||
cursor: pointer;
|
||||
font-family: "Font Awesome 5 Free";
|
||||
font-weight: 900;
|
||||
font-size: 10pt;
|
||||
color: #337ab7;
|
||||
}
|
||||
|
||||
.ssoSessions td.details-control::after {
|
||||
content: "\f067";
|
||||
}
|
||||
|
||||
.ssoSessions tr.shown td.details-control::after {
|
||||
content: "\f068";
|
||||
}
|
||||
|
||||
.row-detail-wrapper {
|
||||
background-color: #d9edf7;
|
||||
}
|
||||
|
||||
.ssoSessions .row-detail {
|
||||
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
}
|
||||
|
||||
.ssoSessions .row-detail thead {
|
||||
display: none;
|
||||
}
|
||||
|
||||
table.principal_attributes td:first-child {
|
||||
width: 30%;
|
||||
}
|
||||
|
||||
table.principal_attributes > tbody > tr > td {
|
||||
border-top-color: #E6E6E6;
|
||||
}
|
||||
|
||||
/* Session container --*/
|
||||
#cas-sessions,
|
||||
#container-stable,
|
||||
.ui-widget {
|
||||
font-family: 'Lato', sans-serif !important;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
#container-stable {
|
||||
margin: 20px 0 20px;
|
||||
}
|
||||
|
||||
#container-stable {
|
||||
margin: 40px 0 20px;
|
||||
}
|
||||
|
||||
#container-stable table th {
|
||||
text-align: left;
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
@import 'https://fonts.googleapis.com/css?family=PT+Mono';
|
||||
#trustedDevices .tabsContainer {
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
#trustedDevices .btn .caret {
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
.tab-pane {
|
||||
padding: 20px 10px;
|
||||
border: 1px solid #ddd;
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
#container {
|
||||
width: 53%;
|
||||
}
|
||||
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 958 B |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 43 B |
|
After Width: | Height: | Size: 980 B |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 3.9 KiB |
|
After Width: | Height: | Size: 43 B |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 602 B |
|
After Width: | Height: | Size: 9.9 KiB |
@@ -0,0 +1,116 @@
|
||||
var table;
|
||||
|
||||
$(document).ready(function () {
|
||||
$('#fmrel').on('submit', function (e) {
|
||||
e.preventDefault();
|
||||
var username = $('#username').val();
|
||||
var password = $('#password').val();
|
||||
var service = $('#service').val();
|
||||
|
||||
releaseAttributes(username, password, service);
|
||||
});
|
||||
|
||||
|
||||
$('#fm1').on('submit', function (e) {
|
||||
e.preventDefault();
|
||||
var uid = $('#uid').val();
|
||||
table = $('#attributesTable').DataTable();
|
||||
table.clear().draw();
|
||||
|
||||
var status = $('#status');
|
||||
|
||||
if (uid !== null && uid !== '') {
|
||||
resolveAttributes(uid);
|
||||
status.html('Resolved attributes for username <strong>' + uid + '</strong>.');
|
||||
status.removeClass('alert-danger');
|
||||
status.addClass('alert-info');
|
||||
status.show();
|
||||
} else {
|
||||
status.html('No username is provided.');
|
||||
status.removeClass('alert-info');
|
||||
status.addClass('alert-danger');
|
||||
status.show();
|
||||
}
|
||||
});
|
||||
|
||||
if ($.fn.dataTable.isDataTable('#attributesTable')) {
|
||||
table = $('#attributesTable').DataTable();
|
||||
} else {
|
||||
table = $('#attributesTable').DataTable({
|
||||
paging: false,
|
||||
searching: false
|
||||
});
|
||||
}
|
||||
|
||||
$('#status').hide();
|
||||
|
||||
});
|
||||
|
||||
function resolveAttributes(uid) {
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: urls.resolveAttributes,
|
||||
data: {'uid': uid},
|
||||
success: function (data) {
|
||||
var table = $('#attributesTable').DataTable();
|
||||
table.clear();
|
||||
var attrs = data.attributes;
|
||||
for (var property in attrs) {
|
||||
if (attrs.hasOwnProperty(property)) {
|
||||
table.row.add([
|
||||
'<code>' + property + '</code>', '<code>' + attrs[property] + '</code>'
|
||||
]).draw(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function releaseAttributes(uid, psw, service) {
|
||||
$('validationresponse').empty();
|
||||
$('cas1').empty();
|
||||
$('cas2').empty();
|
||||
$('cas3Xml').empty();
|
||||
$('cas3Json').empty();
|
||||
|
||||
$('#submitRelease').attr('disabled', 'disabled');
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: urls.releaseAttributes,
|
||||
data: {'username': uid, 'password': psw, 'service': service},
|
||||
success: function (data) {
|
||||
var html = '<ul><li>Service Id: <code>' + data.registeredService.id + '</code></li>'
|
||||
+ '<li>Service Identifier: <code>' + data.registeredService.serviceId + '</code></li>'
|
||||
+ '<li>Service Name: <code>' + data.registeredService.name + '</code></li>'
|
||||
+ '</ul><p/>';
|
||||
$('#validationresponse').html(html);
|
||||
|
||||
var resp = '<pre>' + JSON.stringify(data.registeredService, null, 4) + '</pre>';
|
||||
$('#serviceJson').html(resp);
|
||||
|
||||
resp = '<pre>' + data.cas1Response + '</pre>';
|
||||
$('#cas1').html(resp);
|
||||
|
||||
resp = '<pre>' + data.cas2Response + '</pre>';
|
||||
$('#cas2').html(resp);
|
||||
|
||||
resp = '<pre>' + data.cas3XmlResponse + '</pre>';
|
||||
$('#cas3Xml').html(resp);
|
||||
|
||||
resp = '<pre>' + data.cas3JsonResponse + '</pre>';
|
||||
$('#cas3Json').html(resp);
|
||||
},
|
||||
error: function (err) {
|
||||
var html = '<div class=\'alert alert-danger\'>'
|
||||
+ '<h4>Response Error</h4>'
|
||||
+ 'Status: <code>' + err.responseJSON.status + '</code><p/>'
|
||||
+ 'Exception: <code>' + err.responseJSON.exception + '</code><p/>'
|
||||
+ 'Message: <code>' + err.responseJSON.message + '</code><p/>'
|
||||
+ '</div>';
|
||||
$('#validationresponse').html(html);
|
||||
},
|
||||
complete: function() {
|
||||
$('#submitRelease').removeAttr('disabled');
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
$('#myTabs a').click(function (e) {
|
||||
e.preventDefault();
|
||||
$(this).tab('show');
|
||||
});
|
||||
|
||||
(function () {
|
||||
var getData = function () {
|
||||
$.getJSON(urls.getEvents, function (data) {
|
||||
authnEventsTable(data);
|
||||
});
|
||||
};
|
||||
|
||||
var authnEventsTable = function (jsonData) {
|
||||
var t = $('#authnEventsTable').DataTable({
|
||||
'order': [[2, 'desc']],
|
||||
retrieve: true,
|
||||
columnDefs: [
|
||||
{
|
||||
'targets': 0,
|
||||
render: function (data) {
|
||||
return '<span class="glyphicon glyphicon-flash" aria-hidden="true"> </span>' + data;
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
for (var i = 0; i < jsonData.length; i++) {
|
||||
var rec = jsonData[i];
|
||||
|
||||
var type = rec.type.split('.');
|
||||
t.row.add([
|
||||
type[type.length - 1],
|
||||
rec.principalId,
|
||||
new Date(rec.creationTime*1000),
|
||||
new Date(rec.timestamp),
|
||||
rec.properties.agent,
|
||||
rec.clientIpAddress,
|
||||
rec.serverIpAddress,
|
||||
rec.properties.geoLatitude === 'undefined' ? '' : Number(rec.properties.geoLatitude).toFixed(2),
|
||||
rec.properties.geoLongitude === 'undefined' ? '' : Number(rec.properties.geoLongitude).toFixed(2),
|
||||
rec.properties.geoAccuracy === 'undefined' ? '' : Number(rec.properties.geoAccuracy).toFixed(2)
|
||||
]).draw(false);
|
||||
}
|
||||
};
|
||||
|
||||
// initialization *******
|
||||
(function init () {
|
||||
getData();
|
||||
})();
|
||||
})();
|
||||
@@ -0,0 +1,145 @@
|
||||
/* global trackGeoLocation, jqueryReady */
|
||||
|
||||
/* exported resourceLoadedSuccessfully */
|
||||
|
||||
function requestGeoPosition() {
|
||||
// console.log('Requesting GeoLocation data from the browser...');
|
||||
if (navigator.geolocation) {
|
||||
navigator.geolocation.getCurrentPosition(showGeoPosition, logGeoLocationError,
|
||||
{maximumAge: 600000, timeout: 5000, enableHighAccuracy: true});
|
||||
} else {
|
||||
// console.log('Browser does not support Geo Location');
|
||||
}
|
||||
}
|
||||
|
||||
function logGeoLocationError(error) {
|
||||
switch (error.code) {
|
||||
case error.PERMISSION_DENIED:
|
||||
// console.log('User denied the request for GeoLocation.');
|
||||
break;
|
||||
case error.POSITION_UNAVAILABLE:
|
||||
// console.log('Location information is unavailable.');
|
||||
break;
|
||||
case error.TIMEOUT:
|
||||
// console.log('The request to get user location timed out.');
|
||||
break;
|
||||
default:
|
||||
// console.log('An unknown error occurred.');
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
function showGeoPosition(position) {
|
||||
$('[name="geolocation"]').val(position.coords.latitude + ','
|
||||
+ position.coords.longitude + ',' + position.coords.accuracy + ',' + position.timestamp);
|
||||
}
|
||||
|
||||
|
||||
function preserveAnchorTagOnForm() {
|
||||
$('#fm1').submit(function () {
|
||||
var location = self.document.location;
|
||||
var hash = decodeURIComponent(location.hash);
|
||||
|
||||
if (hash != undefined && hash != '' && hash.indexOf('#') === -1) {
|
||||
hash = '#' + hash;
|
||||
}
|
||||
|
||||
var action = $('#fm1').attr('action');
|
||||
if (action == undefined) {
|
||||
action = location.href;
|
||||
} else {
|
||||
var qidx = location.href.indexOf('?');
|
||||
if (qidx != -1) {
|
||||
var queryParams = location.href.substring(qidx);
|
||||
action += queryParams;
|
||||
}
|
||||
}
|
||||
action += hash;
|
||||
$('#fm1').attr('action', action);
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
function areCookiesEnabled() {
|
||||
if ($.cookie == undefined) {
|
||||
return;
|
||||
}
|
||||
|
||||
$.cookie('cookiesEnabled', 'true');
|
||||
var value = $.cookie('cookiesEnabled');
|
||||
$.removeCookie('cookiesEnabled');
|
||||
return value != undefined;
|
||||
|
||||
}
|
||||
|
||||
function disableEmptyInputFormSubmission() {
|
||||
var fields = $('#fm1 input[name="username"],[name="password"]');
|
||||
|
||||
if (fields.length == 2) {
|
||||
fields.on('input', function (event) {
|
||||
var enableSubmission = $('#fm1 input[name="username"]').val().trim() &&
|
||||
$('#fm1 input[name="password"]').val().trim();
|
||||
|
||||
if (enableSubmission) {
|
||||
$('#fm1 input[name=submit]').removeAttr('disabled');
|
||||
event.stopPropagation();
|
||||
} else {
|
||||
$('#fm1 input[name=submit]').attr('disabled', 'true');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle auto-complete events to the extent possible.
|
||||
*/
|
||||
if ($('#fm1 input[name="username"]').length > 0) {
|
||||
setTimeout(function () {
|
||||
var uid = $('#username').val();
|
||||
if (uid != null && uid != '') {
|
||||
$('#username').change();
|
||||
$('#username').focus();
|
||||
$('#fm1 input[name=submit]').removeAttr('disabled');
|
||||
}
|
||||
|
||||
}, 100);
|
||||
}
|
||||
}
|
||||
|
||||
function resourceLoadedSuccessfully() {
|
||||
$(document).ready(function () {
|
||||
|
||||
if (trackGeoLocation) {
|
||||
requestGeoPosition();
|
||||
}
|
||||
|
||||
if ($(':focus').length === 0) {
|
||||
$('input:visible:enabled:first').focus();
|
||||
}
|
||||
|
||||
if (areCookiesEnabled()) {
|
||||
$('#cookiesDisabled').hide();
|
||||
} else {
|
||||
$('#cookiesDisabled').show();
|
||||
}
|
||||
|
||||
disableEmptyInputFormSubmission();
|
||||
preserveAnchorTagOnForm();
|
||||
|
||||
$('#capslock-on').hide();
|
||||
$('#fm1 input[name="username"],[name="password"]').trigger('input');
|
||||
$('#fm1 input[name="username"]').focus();
|
||||
|
||||
$('#password').keypress(function (e) {
|
||||
var s = String.fromCharCode(e.which);
|
||||
if (s.toUpperCase() === s && s.toLowerCase() !== s && !e.shiftKey) {
|
||||
$('#capslock-on').show();
|
||||
} else {
|
||||
$('#capslock-on').hide();
|
||||
}
|
||||
});
|
||||
if (typeof(jqueryReady) == 'function') {
|
||||
jqueryReady();
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
var strings = strings;
|
||||
|
||||
/* global data */
|
||||
$(document).ready(function(){
|
||||
resolveAttributes();
|
||||
optionSelected();
|
||||
});
|
||||
|
||||
function optionSelected() {
|
||||
var v = $('input[name=option]:checked', '#fm1').val();
|
||||
if (v == 0) {
|
||||
$('#reminderPanel').hide();
|
||||
$('#reminderTab').hide();
|
||||
} else {
|
||||
$('#reminderPanel').show();
|
||||
$('#reminderTab').show();
|
||||
}
|
||||
}
|
||||
|
||||
function resolveAttributes() {
|
||||
var table;
|
||||
|
||||
if ( $.fn.dataTable.isDataTable( '#attributesTable' ) ) {
|
||||
table = $('#attributesTable').DataTable();
|
||||
}
|
||||
else {
|
||||
table = $('#attributesTable').DataTable( {
|
||||
paging : false,
|
||||
searching : false,
|
||||
language: {
|
||||
info: strings.info
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
table.clear();
|
||||
var attrs = data.attributes;
|
||||
for (var property in attrs) {
|
||||
if (attrs.hasOwnProperty(property)) {
|
||||
table.row.add([
|
||||
'<code>' + property + '</code>', '<code>' + attrs[property] + '</code>'
|
||||
]).draw(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,221 @@
|
||||
var infoEl = $('tr.info').clone();
|
||||
var strings = strings;
|
||||
|
||||
/* Formatting function for row details - modify as you need */
|
||||
function format(d) {
|
||||
var detail = infoEl.clone();
|
||||
// show
|
||||
$(detail).toggleClass('hidden');
|
||||
// add data
|
||||
var dec = d.decision;
|
||||
// date
|
||||
detail.find('.created-date')[0].append(date(dec.createdDate).toLocaleString());
|
||||
// options & reminder
|
||||
if (dec.options === 'ALWAYS') {
|
||||
detail.find('.consent-reminder').parent().remove();
|
||||
} else {
|
||||
var unit = dec.reminderTimeUnit.toLowerCase();
|
||||
detail.find('.consent-reminder span:not(.' + unit + ')').remove();
|
||||
if (dec.reminder === 1) {
|
||||
var _unit = detail.find('.consent-reminder span.' + unit);
|
||||
_unit.html(_unit.text().slice(0, -1));
|
||||
}
|
||||
detail.find('.consent-reminder').prepend(dec.reminder);
|
||||
}
|
||||
detail.find('.consent-options span:not(.' + dec.options.toLowerCase().replace('_','-') + ')').remove();
|
||||
// render attribute table
|
||||
attributeTable(detail.find('.consent-attributes'),d.attributes);
|
||||
// enable tooltip
|
||||
detail.find('.consent-options [data-toggle="tooltip"]').tooltip();
|
||||
// setup delete button
|
||||
var del = detail.find('.btn-danger');
|
||||
var data = { 'id': dec.id, 'service': dec.service };
|
||||
del.on('click', data, function (e) {
|
||||
e.preventDefault();
|
||||
confirm(e.data.id, e.data.service);
|
||||
});
|
||||
|
||||
return detail;
|
||||
}
|
||||
|
||||
function alertUser(message, alertType) {
|
||||
$('#alertWrapper').append('<div id="alertdiv" class="alert alert-' + alertType + ' alert-dismissible">' +
|
||||
'<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>' +
|
||||
'<span class="alertMessage">' + message + '</span></div>'
|
||||
);
|
||||
|
||||
setTimeout(function () { // this will automatically close the alert and remove this if the users doesnt close it in 5 secs
|
||||
$('#alertdiv').remove();
|
||||
}, 5000);
|
||||
}
|
||||
|
||||
function attributeTable(t, attributes) {
|
||||
|
||||
var table;
|
||||
if ( $.fn.dataTable.isDataTable( t ) ) {
|
||||
table = $(t).DataTable();
|
||||
}
|
||||
else {
|
||||
table = $(t).DataTable( {
|
||||
paging : false,
|
||||
searching : false,
|
||||
info: false
|
||||
} );
|
||||
}
|
||||
|
||||
table.clear();
|
||||
for (var property in attributes) {
|
||||
if (attributes.hasOwnProperty(property)) {
|
||||
table.row.add([
|
||||
'<code>' + property + '</code>', '<code>' + attributes[property] + '</code>'
|
||||
]).draw(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function date(d) {
|
||||
var date = new Date(d[0],d[1]-1,d[2],d[3],d[4],d[5]);
|
||||
return date;
|
||||
}
|
||||
|
||||
function confirm(decisionId, service) {
|
||||
$('#confirmdiv').remove();
|
||||
var svcStr = service.length > 70 ? service.substr(0,68) + '...' : service;
|
||||
var message = strings.confirm.replace('{}', svcStr);
|
||||
$('#alertWrapper').append('<div id="confirmdiv" class="alert alert-warning">' +
|
||||
'<span class="alertMessage">' + message + '</span><br/>' +
|
||||
'<button type="button" id="delete" class="btn btn-xs btn-danger" aria-label="Yes"><strong>' +
|
||||
strings.yes + ' </strong></button>' +
|
||||
'<button type="button" class="btn btn-xs btn-default" aria-label="No" value="' + decisionId + '"><strong>' +
|
||||
strings.no + '</strong></button></div>'
|
||||
);
|
||||
$('#confirmdiv .btn').click(function() {
|
||||
$('#confirmdiv').alert('close');
|
||||
});
|
||||
$('#delete').click(function() {
|
||||
removeDecision(decisionId);
|
||||
});
|
||||
}
|
||||
|
||||
function removeDecision(decisionId) {
|
||||
var factory = {};
|
||||
factory.httpHeaders = {};
|
||||
factory.httpHeaders[$('meta[name=\'_csrf_header\']').attr('content')] = $('meta[name=\'_csrf\']').attr('content');
|
||||
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: urls.delete,
|
||||
data: {decisionId: decisionId},
|
||||
headers: factory.httpHeaders,
|
||||
dataType: 'json',
|
||||
success: function (data) {
|
||||
// Reinitialize the table data
|
||||
$('#consentDecisions').DataTable().ajax.reload();
|
||||
|
||||
if (!data) {
|
||||
alertUser(strings.error, 'danger');
|
||||
} else {
|
||||
alertUser(strings.success, 'success');
|
||||
// Reload the page
|
||||
location.reload();
|
||||
}
|
||||
},
|
||||
error: function () {
|
||||
alertUser('There appears to be an error. Please try your request again.', 'danger');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
var consentDecisions = (function () {
|
||||
var createDataTable = function () {
|
||||
$('#consentDecisions').DataTable({
|
||||
'order': [[0, 'desc']],
|
||||
'initComplete': function (settings, json) {
|
||||
if (!json || json.length == 0) {
|
||||
$('#consent-decisons').hide();
|
||||
$('#loadingMessage').hide();
|
||||
$('#no-consent-decisions').show();
|
||||
} else {
|
||||
$('#loadingMessage').hide();
|
||||
$('#no-consent-decisions').hide();
|
||||
$('#consent-decisons').show();
|
||||
}
|
||||
},
|
||||
'language': strings.data,
|
||||
'paging': false,
|
||||
'ajax': {
|
||||
'url': urls.getConsentDecisions,
|
||||
'dataSrc': ''
|
||||
},
|
||||
'data': consentDecisions,
|
||||
'columnDefs': [
|
||||
{
|
||||
'targets': 0,
|
||||
'className': 'created-date',
|
||||
'data': function (row) {
|
||||
return date(row.decision.createdDate);
|
||||
},
|
||||
'render': function (data) {
|
||||
var opts = { year: 'numeric', month: 'numeric' };
|
||||
return '<div class="label label-primary"><span class="hidden">' + data.toISOString() +
|
||||
'</span>' + data.toLocaleDateString('en', opts ) +
|
||||
'</div>';
|
||||
}
|
||||
},
|
||||
{
|
||||
'targets': 1,
|
||||
'data': 'decision.service',
|
||||
'className': 'col service-id',
|
||||
'render': function (data) {
|
||||
if ($(window).width() <= 855) {
|
||||
return data.length > 70 ?
|
||||
'<span title="' + data + '">' + data.substr(0, 68) + '...</span>' : data;
|
||||
} else {
|
||||
return data.length > 180 ?
|
||||
'<span title="' + data + '">' + data.substr(0, 178) + '...</span>' : data;
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
};
|
||||
|
||||
var addEventHandlers = function () {
|
||||
|
||||
/* Performs logout for consent application, no SLO */
|
||||
$('#logout').click(function() {
|
||||
var logout = window.location + '/logout';
|
||||
window.location.assign(logout);
|
||||
});
|
||||
|
||||
// Add event listener for opening and closing details
|
||||
$(document).on('click', '#consentDecisions > tbody > tr:not(.info)', function () {
|
||||
var table = $('#consentDecisions').DataTable();
|
||||
var tr = $(this);
|
||||
var row = table.row(tr);
|
||||
|
||||
if (row.child.isShown()) {
|
||||
// This row is already open - close it
|
||||
row.child.hide();
|
||||
tr.removeClass('shown');
|
||||
}
|
||||
else {
|
||||
// Open this row
|
||||
row.child(format(row.data()), 'info').show();
|
||||
tr.addClass('shown');
|
||||
}
|
||||
});
|
||||
};
|
||||
// initialization *******
|
||||
(function init() {
|
||||
createDataTable();
|
||||
addEventHandlers();
|
||||
})();
|
||||
|
||||
// Public Methods
|
||||
return {
|
||||
/**
|
||||
* Not used
|
||||
*/
|
||||
};
|
||||
})();
|
||||
@@ -0,0 +1 @@
|
||||
(function(e,t){if(typeof define==="function"&&define.amd){define([],t)}else if(typeof module==="object"&&module.exports){module.exports=t()}else{var o=t();o._onReady(o.init);e.Duo=o}})(this,function(){var e=/^(?:AUTH|ENROLL)+\|[A-Za-z0-9\+\/=]+\|[A-Za-z0-9\+\/=]+$/;var t=/^ERR\|[\w\s\.\(\)]+$/;var o=/^DUO_OPEN_WINDOW\|/;var n=["duo.com","duosecurity.com","duomobile.s3-us-west-1.amazonaws.com"];var i="duo_iframe",a="",r="sig_response",s,u,f,d,m,c;function l(e,t){throw new Error("Duo Web SDK error: "+e+(t?"\n"+"See "+t+" for more information":""))}function h(e){return e.replace(/([a-z])([A-Z])/,"$1-$2").toLowerCase()}function p(e,t){if("dataset"in e){return e.dataset[t]}else{return e.getAttribute("data-"+h(t))}}function g(e,t,o,n){if("addEventListener"in window){e.addEventListener(t,n,false)}else{e.attachEvent(o,n)}}function w(e,t,o,n){if("removeEventListener"in window){e.removeEventListener(t,n,false)}else{e.detachEvent(o,n)}}function v(e){g(document,"DOMContentLoaded","onreadystatechange",e)}function _(e){w(document,"DOMContentLoaded","onreadystatechange",e)}function b(e){g(window,"message","onmessage",e)}function E(e){w(window,"message","onmessage",e)}function y(e){if(!e){return}if(e.indexOf("ERR|")===0){l(e.split("|")[1])}if(e.indexOf(":")===-1||e.split(":").length!==2){l("Duo was given a bad token. This might indicate a configuration "+"problem with one of Duo's client libraries.","https://www.duosecurity.com/docs/duoweb#first-steps")}var t=e.split(":");u=e;f=t[0];d=t[1];return{sigRequest:e,duoSig:t[0],appSig:t[1]}}function D(){m=document.getElementById(i);if(!m){throw new Error("This page does not contain an iframe for Duo to use."+'Add an element like <iframe id="duo_iframe"></iframe> '+"to this page. "+"See https://www.duosecurity.com/docs/duoweb#3.-show-the-iframe "+"for more information.")}q();_(D)}function O(n){return Boolean(n.origin==="https://"+s&&typeof n.data==="string"&&(n.data.match(e)||n.data.match(t)||n.data.match(o)))}function R(e){if(e){if(e.host){s=e.host}if(e.sig_request){y(e.sig_request)}if(e.post_action){a=e.post_action}if(e.post_argument){r=e.post_argument}if(e.iframe){if(e.iframe.tagName){m=e.iframe}else if(typeof e.iframe==="string"){i=e.iframe}}if(typeof e.submit_callback==="function"){c=e.submit_callback}}if(m){q()}else{m=document.getElementById(i);if(m){q()}else{v(D)}}_(R)}function A(e){if(O(e)){if(e.data.match(o)){var t=e.data.substring("DUO_OPEN_WINDOW|".length);if(L(t)){window.open(t,"_self")}}else{B(e.data);E(A)}}}function L(e){if(!e){return false}var t=document.createElement("a");t.href=e;if(t.protocol==="duotrustedendpoints:"){return true}else if(t.protocol!=="https:"){return false}for(var o=0;o<n.length;o++){if(t.hostname.endsWith("."+n[o])||t.hostname===n[o]){return true}}return false}function q(){if(!s){s=p(m,"host");if(!s){l("No API hostname is given for Duo to use. Be sure to pass "+"a `host` parameter to Duo.init, or through the `data-host` "+"attribute on the iframe element.","https://www.duosecurity.com/docs/duoweb#3.-show-the-iframe")}}if(!f||!d){y(p(m,"sigRequest"));if(!f||!d){l("No valid signed request is given. Be sure to give the "+"`sig_request` parameter to Duo.init, or use the "+"`data-sig-request` attribute on the iframe element.","https://www.duosecurity.com/docs/duoweb#3.-show-the-iframe")}}if(a===""){a=p(m,"postAction")||a}if(r==="sig_response"){r=p(m,"postArgument")||r}m.src=["https://",s,"/frame/web/v1/auth?tx=",f,"&parent=",encodeURIComponent(document.location.href),"&v=2.6"].join("");b(A)}function B(e){var t=document.createElement("input");t.type="hidden";t.name=r;t.value=e+":"+d;var o=document.getElementById("duo_form");if(!o){o=document.createElement("form");m.parentElement.insertBefore(o,m.nextSibling)}o.method="POST";o.action=a;o.appendChild(t);if(typeof c==="function"){c.call(null,o)}else{o.submit()}}return{init:R,_onReady:v,_parseSigRequest:y,_isDuoMessage:O,_doPostBack:B}});
|
||||
@@ -0,0 +1,342 @@
|
||||
/* global logConfigFileLocation, SockJS, Stomp */
|
||||
var stompClient = null;
|
||||
|
||||
function setConnected(connected) {
|
||||
|
||||
var el = document.getElementById('websocketStatus');
|
||||
el.style.visibility = connected ? 'visible' : 'hidden';
|
||||
el.class = connected ? 'alert alert-info' : 'alert alert-danger';
|
||||
|
||||
if (!connected) {
|
||||
el.innerHTML = 'Disconnected!';
|
||||
} else {
|
||||
el.innerHTML = 'Connected to CAS. Streaming and tailing logs based on <kbd>[' + logConfigFileLocation + ']</kbd>...';
|
||||
}
|
||||
}
|
||||
|
||||
function connect() {
|
||||
$('#logoutputarea').empty();
|
||||
var socket = new SockJS(urls.reportsWebsocket);
|
||||
stompClient = Stomp.over(socket);
|
||||
stompClient.connect({}, function () {
|
||||
setConnected(true);
|
||||
stompClient.subscribe('/topic/logs', function (msg) {
|
||||
if (msg != null && msg.body != '') {
|
||||
showLogs(msg.body);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function disconnect() {
|
||||
$('#logoutputarea').empty();
|
||||
$('#logoutputarea').attr('readonly', 'readonly');
|
||||
|
||||
if (stompClient != null) {
|
||||
stompClient.disconnect();
|
||||
}
|
||||
setConnected(false);
|
||||
}
|
||||
|
||||
function showLogs(message) {
|
||||
if (message != '') {
|
||||
$('#logoutputarea').val($('#logoutputarea').val() + '\n' + message);
|
||||
$('#logoutputarea').scrollTop(document.getElementById('logoutputarea').scrollHeight);
|
||||
}
|
||||
}
|
||||
|
||||
disconnect();
|
||||
connect();
|
||||
setInterval(function () {
|
||||
}, 100);
|
||||
|
||||
/*************
|
||||
*
|
||||
***************/
|
||||
$('#myTabs a').click(function (e) {
|
||||
e.preventDefault();
|
||||
$(this).tab('show');
|
||||
});
|
||||
|
||||
var alertHandler = (function () {
|
||||
var alertContainer = $('#alert-container');
|
||||
var create = function (message, state) {
|
||||
//console.log('create the alert');
|
||||
alertContainer.html('<div class="alert alert-' + state + ' alert-dismissable"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button><span>' + message + '</span></div>');
|
||||
|
||||
alertContainer.delay(2000).fadeOut('slow');
|
||||
};
|
||||
|
||||
var destroy = function () {
|
||||
alertContainer.empty();
|
||||
};
|
||||
|
||||
return {
|
||||
dismiss: function () {
|
||||
destroy();
|
||||
},
|
||||
show: function (msg, state) {
|
||||
create(msg, state);
|
||||
}
|
||||
};
|
||||
})();
|
||||
|
||||
var loggingDashboard = (function () {
|
||||
var json = null;
|
||||
|
||||
var logLevels = ['trace', 'debug', 'info', 'warn', 'error'];
|
||||
|
||||
var getData = function () {
|
||||
$.getJSON(urls.getConfiguration, function (data) {
|
||||
json = data;
|
||||
loggerTable();
|
||||
});
|
||||
};
|
||||
|
||||
var getAuditData = function () {
|
||||
$.getJSON(urls.getAuditLog, function (data) {
|
||||
if ($(data).length > 0) {
|
||||
loggerTableAudit(data);
|
||||
} else {
|
||||
$('#auditLogTable').DataTable();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
var loggerTableAudit = function (jsonData) {
|
||||
var t = $('#auditLogTable').DataTable({
|
||||
'autoWidth': false,
|
||||
'order': [[3, 'desc']],
|
||||
retrieve: true,
|
||||
columnDefs: [
|
||||
|
||||
{'width': '5%', 'targets': 0},
|
||||
{'width': '100%', 'targets': 1},
|
||||
{
|
||||
'targets': 2,
|
||||
render: function (data) {
|
||||
var dd = data.toLowerCase();
|
||||
if (dd.indexOf('created') != -1) {
|
||||
return '<span class="glyphicon glyphicon-plus" aria-hidden="true"> </span>' + data;
|
||||
}
|
||||
if (dd.indexOf('validated') != -1) {
|
||||
return '<span class="glyphicon glyphicon-ok" aria-hidden="true"> </span>' + data;
|
||||
}
|
||||
if (dd.indexOf('destroyed') != -1 || dd.indexOf('deleted') != -1) {
|
||||
return '<span class="glyphicon glyphicon-minus" aria-hidden="true"> </span>' + data;
|
||||
}
|
||||
|
||||
if (dd.indexOf('success') != -1) {
|
||||
return '<span class="glyphicon glyphicon-thumbs-up" aria-hidden="true"> </span>' + data;
|
||||
}
|
||||
if (dd.indexOf('failed') != -1) {
|
||||
return '<span class="glyphicon glyphicon-thumbs-down" aria-hidden="true"> </span>' + data;
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
for (var i = 0; i < jsonData.length; i++) {
|
||||
var rec = jsonData[i];
|
||||
t.row.add([
|
||||
rec.principal,
|
||||
rec.resourceOperatedUpon,
|
||||
rec.actionPerformed,
|
||||
new Date(rec.whenActionWasPerformed),
|
||||
rec.clientIpAddress,
|
||||
rec.serverIpAddress
|
||||
]).draw(false);
|
||||
}
|
||||
};
|
||||
|
||||
var loggerTable = function () {
|
||||
$('#loggersTable').DataTable({
|
||||
'autoWidth': false,
|
||||
'order': [[1, 'desc']],
|
||||
data: json.loggers,
|
||||
'drawCallback': function () {
|
||||
var api = this.api();
|
||||
|
||||
if (api.page.info().pages > 1) {
|
||||
$('#' + $.fn.dataTable.tables()[0].id + '_paginate')[0].style.display = 'block';
|
||||
} else {
|
||||
$('#' + $.fn.dataTable.tables()[0].id + '_paginate')[0].style.display = 'none';
|
||||
}
|
||||
},
|
||||
'initComplete': function (settings) {
|
||||
if (!settings.aoData || settings.aoData.length == 0) {
|
||||
$('#loadingMessage').addClass('d-none');
|
||||
$('#errorLoadingData').removeClass('d-none');
|
||||
} else {
|
||||
$('#loadingMessage').addClass('d-none');
|
||||
$('#errorLoadingData').addClass('d-none');
|
||||
$('#loggingDashboard .tabsContainer').removeClass('d-none');
|
||||
}
|
||||
},
|
||||
'processing': true,
|
||||
columnDefs: [
|
||||
{
|
||||
'targets': 0,
|
||||
'className': 'details-control',
|
||||
'orderable': false,
|
||||
'data': 'appenders',
|
||||
'defaultContent': '',
|
||||
render: function (data) {
|
||||
if (data.length > 0) {
|
||||
return '<span></span>';
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
targets: 1,
|
||||
data: 'name',
|
||||
className: 'col-xs-5'
|
||||
},
|
||||
{
|
||||
targets: 2,
|
||||
data: 'additive',
|
||||
className: 'additive col-xs-2',
|
||||
render: function (data) {
|
||||
if (data) {
|
||||
return '<span class="glyphicon glyphicon-ok" aria-hidden="true"></span>';
|
||||
} else {
|
||||
return '<span class="glyphicon glyphicon-remove" aria-hidden="true"></span>';
|
||||
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
targets: 3,
|
||||
data: 'state',
|
||||
className: 'col-xs-2'
|
||||
},
|
||||
{
|
||||
targets: 4,
|
||||
data: 'level',
|
||||
className: 'col-xs-3',
|
||||
render: function (data, type, full, meta) {
|
||||
return toggleSwitch(data, type, full, meta);
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
};
|
||||
|
||||
var toggleSwitch = function (data, type, full) {
|
||||
// Todo: Add additional colors for the other options
|
||||
//console.log('toggleSwitch data',data);
|
||||
//console.log('type',type);
|
||||
//console.log('full',full);
|
||||
//console.log('meta',meta);
|
||||
//console.log(logLevels);
|
||||
var btnColor;
|
||||
|
||||
switch (data.toLowerCase()) {
|
||||
case 'error':
|
||||
btnColor = 'danger';
|
||||
break;
|
||||
case 'info':
|
||||
btnColor = 'info';
|
||||
break;
|
||||
case 'warn':
|
||||
btnColor = 'warning';
|
||||
break;
|
||||
default:
|
||||
btnColor = 'default';
|
||||
}
|
||||
var btnGroup = '<div class="dropdown" data-logger="' + full + '"><button class="btn btn-sm btn-block bg-' + btnColor + ' dropdown-toggle" name="recordinput" data-toggle="dropdown">' + data + ' <span class="caret"></span></button>' +
|
||||
'<div class="dropdown-menu">';
|
||||
for (var i = 0; i < logLevels.length; i++) {
|
||||
btnGroup += '<a class="dropdown-item" href="#">' + logLevels[i].toUpperCase() + '</a>';
|
||||
}
|
||||
btnGroup += '</div>';
|
||||
|
||||
return btnGroup;
|
||||
};
|
||||
|
||||
/* Formatting function for row details - modify as you need */
|
||||
var viewAppenders = function (data) {
|
||||
return '<table class="table table-bordered row-detail"><tbody><tr class="">' +
|
||||
'<td class="field-label active">Appenders:</td>' +
|
||||
'<td><kbd>' + JSON.stringify(data.appenders, null, 2) + '</kbd></td>' +
|
||||
'</tr>' +
|
||||
'</tbody></table>';
|
||||
};
|
||||
|
||||
var addEventHandlers = function () {
|
||||
//console.log('addEventHAndlers()');
|
||||
|
||||
$(document).on('click', '#loggersTable .dropdown-menu a', function (e) {
|
||||
//console.log('status change', this);
|
||||
e.preventDefault();
|
||||
var selText = $(this).text();
|
||||
|
||||
changeLogLevel(selText, this);
|
||||
});
|
||||
|
||||
$(document).on('click', '#loggersTable tbody td.details-control span', function () {
|
||||
var table = $('#loggersTable').DataTable();
|
||||
var tr = $(this).closest('tr');
|
||||
var row = table.row(tr);
|
||||
|
||||
if (row.child.isShown()) {
|
||||
// This row is already open - close it
|
||||
row.child.hide();
|
||||
tr.removeClass('shown');
|
||||
} else {
|
||||
// Open this row
|
||||
row.child(viewAppenders(row.data()), 'info').show();
|
||||
tr.addClass('shown');
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
var changeLogLevel = function (newLevel, el) {
|
||||
/**
|
||||
* POST - /cas/status/logging/updateLoggerLevel
|
||||
* Allows you to change the log level for given LOGGER. Parameters are:
|
||||
* loggerName, loggerLevel, additive (true/false)
|
||||
*/
|
||||
var table = $('#loggersTable').DataTable();
|
||||
var data = table.row($(el).closest('tr')[0]).data();
|
||||
|
||||
if (newLevel != data.level) {
|
||||
var cell = table.cell($(el).closest('td')[0]);
|
||||
|
||||
$.post(urls.updateLevel, {
|
||||
loggerName: data.name,
|
||||
loggerLevel: newLevel,
|
||||
additive: data.additive
|
||||
}, function () {
|
||||
cell.data(newLevel).draw();
|
||||
alertHandler.show('Successfully changed.', 'success');
|
||||
}).fail(function () {
|
||||
alertHandler.show('Error saving change. Please try again', 'danger');
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
// initialization *******
|
||||
(function init() {
|
||||
})();
|
||||
|
||||
return {
|
||||
init: function () {
|
||||
getData();
|
||||
addEventHandlers();
|
||||
getAuditData();
|
||||
},
|
||||
getJson: function () {
|
||||
return json;
|
||||
},
|
||||
showLoggersTable: function () {
|
||||
loggerTable();
|
||||
}
|
||||
};
|
||||
})();
|
||||
|
||||
loggingDashboard.init();
|
||||
@@ -0,0 +1,142 @@
|
||||
/* global jqueryReady, policyPattern, zxcvbn, passwordStrengthI18n */
|
||||
/*eslint-disable no-unused-vars*/
|
||||
function jqueryReady() {
|
||||
var strength = passwordStrengthI18n;
|
||||
|
||||
$.fn.zxcvbnProgressBar = function (options) {
|
||||
|
||||
//init settings
|
||||
var settings = $.extend({
|
||||
allProgressBarClasses: 'progress-bar-danger progress-bar-warning progress-bar-success progress-bar-striped active',
|
||||
progressBarClass0: 'progress-bar-danger progress-bar-striped active',
|
||||
progressBarClass1: 'progress-bar-danger progress-bar-striped active',
|
||||
progressBarClass2: 'progress-bar-warning progress-bar-striped active',
|
||||
progressBarClass3: 'progress-bar-success',
|
||||
progressBarClass4: 'progress-bar-success'
|
||||
}, options);
|
||||
|
||||
return this.each(function () {
|
||||
settings.progressBar = this;
|
||||
//init progress bar display
|
||||
UpdateProgressBar();
|
||||
//Update progress bar on each keypress of password input
|
||||
$(settings.passwordInput).keyup(function (event) {
|
||||
UpdateProgressBar();
|
||||
});
|
||||
});
|
||||
|
||||
function UpdateProgressBar() {
|
||||
var progressBar = settings.progressBar;
|
||||
var password = $('#password').val();
|
||||
if (password) {
|
||||
var result = zxcvbn(password, settings.userInputs);
|
||||
//result.score: 0, 1, 2, 3 or 4 - if crack time is less than 10**2, 10**4, 10**6, 10**8, Infinity.
|
||||
var scorePercentage = (result.score + 1) * 20;
|
||||
$(progressBar).css('width', scorePercentage + '%');
|
||||
|
||||
if (result.score == 0) {
|
||||
//weak
|
||||
$(progressBar).removeClass(settings.allProgressBarClasses).addClass(settings.progressBarClass0);
|
||||
$(progressBar).html(strength[0]);
|
||||
}
|
||||
else if (result.score == 1) {
|
||||
//normal
|
||||
$(progressBar).removeClass(settings.allProgressBarClasses).addClass(settings.progressBarClass1);
|
||||
$(progressBar).html(strength[1]);
|
||||
}
|
||||
else if (result.score == 2) {
|
||||
//medium
|
||||
$(progressBar).removeClass(settings.allProgressBarClasses).addClass(settings.progressBarClass2);
|
||||
$(progressBar).html(strength[2]);
|
||||
}
|
||||
else if (result.score == 3) {
|
||||
//strong
|
||||
$(progressBar).removeClass(settings.allProgressBarClasses).addClass(settings.progressBarClass3);
|
||||
$(progressBar).html(strength[3]);
|
||||
}
|
||||
else if (result.score == 4) {
|
||||
//very strong
|
||||
$(progressBar).removeClass(settings.allProgressBarClasses).addClass(settings.progressBarClass4);
|
||||
$(progressBar).html(strength[4]);
|
||||
}
|
||||
}
|
||||
else {
|
||||
$(progressBar).css('width', '0%');
|
||||
$(progressBar).removeClass(settings.allProgressBarClasses).addClass(settings.progressBarClass0);
|
||||
$(progressBar).html('');
|
||||
}
|
||||
}
|
||||
};
|
||||
var policyPatternRegex = new RegExp(policyPattern);
|
||||
var password = document.getElementById('password');
|
||||
var confirmed = document.getElementById('confirmedPassword');
|
||||
|
||||
|
||||
password.addEventListener('input', validate);
|
||||
confirmed.addEventListener('input', validate);
|
||||
|
||||
var alertSettings = {
|
||||
allAlertClasses: 'fa-times-circle fa-exclamation-circle fa-info-circle fa-check-circle',
|
||||
alertClassDanger: 'fa-times-circle',
|
||||
alertClassWarning: 'fa-exclamation-circle',
|
||||
alertClassInfo: 'fa-info-circle',
|
||||
alertClassSuccess: 'fa-check-circle'
|
||||
};
|
||||
|
||||
function validate() {
|
||||
var val = password.value;
|
||||
var cnf = confirmed.value;
|
||||
|
||||
$('#password-policy-violation-msg').hide();
|
||||
$('#password-confirm-mismatch-msg').hide();
|
||||
|
||||
var passwordPolicyViolated = val === '' || !policyPatternRegex.test(val);
|
||||
var passwordMismatch = val !== '' && val !== cnf;
|
||||
var disableSubmit = passwordPolicyViolated || passwordMismatch;
|
||||
$('#submit').prop('disabled', disableSubmit);
|
||||
|
||||
var result = zxcvbn(val);
|
||||
$('#strengthProgressBar').zxcvbnProgressBar({ passwordInput: '#password' });
|
||||
|
||||
// Check strength, update the text indicator
|
||||
if (val !== '') {
|
||||
$('#password-strength-warning').text(result.feedback.warning);
|
||||
$('#password-strength-suggestions').text(result.feedback.suggestions);
|
||||
|
||||
var clz = alertSettings.alertClassDanger;
|
||||
switch (result.score) {
|
||||
case 0:
|
||||
case 1:
|
||||
clz = alertSettings.alertClassDanger;
|
||||
break;
|
||||
case 2:
|
||||
clz = alertSettings.alertClassWarning;
|
||||
break;
|
||||
case 3:
|
||||
clz = alertSettings.alertClassInfo;
|
||||
break;
|
||||
case 4:
|
||||
case 5:
|
||||
default:
|
||||
clz = alertSettings.alertClassSuccess;
|
||||
break;
|
||||
}
|
||||
$('#password-strength-icon').removeClass(alertSettings.allAlertClasses).addClass(clz);
|
||||
} else {
|
||||
$('#password-strength-icon').removeClass(alertSettings.allAlertClasses);
|
||||
$('#password-strength-warning').text('');
|
||||
$('#password-strength-suggestions').text('');
|
||||
}
|
||||
|
||||
// Check for mismatch
|
||||
if (passwordMismatch && cnf !== '') {
|
||||
$('#password-confirm-mismatch-msg').show();
|
||||
}
|
||||
|
||||
// Check password policy
|
||||
if (passwordPolicyViolated) {
|
||||
$('#password-policy-violation-msg').show();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,351 @@
|
||||
/*eslint-disable no-unused-vars*/
|
||||
String.prototype.padLeft = function (length, character) {
|
||||
return new Array(length - this.length + 1).join(character || ' ') + this;
|
||||
};
|
||||
|
||||
Date.prototype.toFormattedString = function () {
|
||||
return [String(this.getMonth() + 1).padLeft(2, '0'),
|
||||
String(this.getDate()).padLeft(2, '0'),
|
||||
String(this.getFullYear()).substr(2, 2)].join('/') + ' ' +
|
||||
[String(this.getHours()).padLeft(2, '0'),
|
||||
String(this.getMinutes()).padLeft(2, '0')].join(':');
|
||||
};
|
||||
|
||||
function principalAttributes(obj) {
|
||||
var output = '<table class="table table-condensed principal_attributes"><tbody>';
|
||||
for (var key in obj) {
|
||||
if (obj.hasOwnProperty(key)) {
|
||||
if (Array.isArray(obj[key])) {
|
||||
output = output.concat('<tr><td class="field-label active">' + key + '</td><td>' + obj[key].toString() + '</td></tr>');
|
||||
} else {
|
||||
output = output.concat('<tr><td class="field-label active">' + key + '</td><td>' + obj[key] + '</td></tr>');
|
||||
}
|
||||
}
|
||||
}
|
||||
output = output.concat('</tbody></table>');
|
||||
|
||||
return output;
|
||||
}
|
||||
|
||||
function authenticatedServices(obj) {
|
||||
var output = '';
|
||||
for (var key in obj) {
|
||||
if (obj.hasOwnProperty(key)) {
|
||||
output = output.concat('<h5>' + key + '</h5><table class="table table-condensed principal_attributes"><tbody>');
|
||||
for (var foo in obj[key]) {
|
||||
if (obj[key].hasOwnProperty(foo)) {
|
||||
if (Array.isArray(obj[key][foo])) {
|
||||
output = output.concat('<tr><td class="field-label active">' + foo + ':</td><td>' + obj[key][foo].toString() + '</td></tr>');
|
||||
} else {
|
||||
output = output.concat('<tr><td class="field-label active">' + foo + ':</td><td>' + obj[key][foo] + '</td></tr>');
|
||||
}
|
||||
}
|
||||
}
|
||||
output = output.concat('</tbody></table>');
|
||||
}
|
||||
}
|
||||
return output;
|
||||
}
|
||||
|
||||
/* Formatting function for row details - modify as you need */
|
||||
function format(d) {
|
||||
return '<table class="table table-bordered row-detail">' +
|
||||
'<tbody>' +
|
||||
'<tr class="hidden-md hidden-lg">' +
|
||||
'<td class="field-label active">Access Date:</td>' +
|
||||
'<td>' + d.authentication_date_formatted + '</td>' +
|
||||
'</tr>' +
|
||||
'<tr class="hidden-md hidden-lg">' +
|
||||
'<td class="field-label active">Usage Count:</td>' +
|
||||
'<td>' + d.number_of_uses + '</td>' +
|
||||
'</tr>' +
|
||||
'<tr>' +
|
||||
'<td class="field-label active">Ticket Granting Ticket:</td>' +
|
||||
'<td>' + d.ticket_granting_ticket + '</td>' +
|
||||
'</tr>' +
|
||||
'<tr>' +
|
||||
'<td class="field-label active">Principal Attributes:</td>' +
|
||||
'<td>' +
|
||||
principalAttributes(d.principal_attributes) +
|
||||
'</td>' +
|
||||
'</tr>' +
|
||||
'<tr>' +
|
||||
'<td class="field-label active">Authenticated Services:</td>' +
|
||||
'<td>' +
|
||||
authenticatedServices(d.authenticated_services) +
|
||||
'</td>' +
|
||||
'</tr>' +
|
||||
'<tr>' +
|
||||
'<td class="field-label active">Ticket Granting Service:</td>' +
|
||||
'<td></td>' +
|
||||
'</tr>' +
|
||||
'</tbody></table>';
|
||||
|
||||
}
|
||||
|
||||
function updateAdminPanels(data) {
|
||||
//$('#totalUsers').text(data.totalPrincipals);
|
||||
$('#totalUsers').text(data.activeSsoSessions.length);
|
||||
$('#totalUsageSessions').text(sum(data.activeSsoSessions, 'number_of_uses'));
|
||||
//$('#totalProxied').text(data.totalTicketGrantingTickets);
|
||||
$('#totalTGTs').text(data.totalTicketGrantingTickets);
|
||||
//$('#totalTGTs').text( sum(data.activeSsoSessions, 'is_proxied' ) );
|
||||
}
|
||||
|
||||
function sum(obj, prop) {
|
||||
var sum = 0;
|
||||
for (var el in obj) {
|
||||
if (obj.hasOwnProperty(el)) {
|
||||
sum += ( typeof obj[el][prop] == 'boolean' ) ? +obj[el][prop] : obj[el][prop];
|
||||
}
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
|
||||
/*
|
||||
function showError(msg) {
|
||||
$('#msg').removeClass();
|
||||
$('#msg').addClass('errors');
|
||||
$('#msg').text(msg);
|
||||
$('#msg').show();
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
function showInfo(msg) {
|
||||
$('#msg').removeClass();
|
||||
$('#msg').addClass('info');
|
||||
$('#msg').text(msg);
|
||||
$('#msg').show();
|
||||
}
|
||||
*/
|
||||
|
||||
function alertUser(message, alertType) {
|
||||
$('#alertWrapper').append('<div id="alertdiv" class="alert alert-' + alertType + ' alert-dismissible">' +
|
||||
'<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>' +
|
||||
'<span class="alertMessage">' + message + '</span></div>'
|
||||
);
|
||||
|
||||
setTimeout(function () { // this will automatically close the alert and remove this if the users doesnt close it in 5 secs
|
||||
$('#alertdiv').remove();
|
||||
}, 5000);
|
||||
}
|
||||
|
||||
function removeSession(ticketId) {
|
||||
var factory = {};
|
||||
factory.httpHeaders = {};
|
||||
factory.messages = {};
|
||||
factory.httpHeaders[$('meta[name=\'_csrf_header\']').attr('content')] = $('meta[name=\'_csrf\']').attr('content');
|
||||
|
||||
factory.ticketId = ticketId;
|
||||
|
||||
|
||||
if (ticketId && (ticketId == 'ALL' || ticketId == 'PROXIED' || ticketId == 'DIRECT' )) {
|
||||
factory.url = urls.destroy.all;
|
||||
factory.data = {type: ticketId};
|
||||
factory.messages.success = 'Removed <strong>' + ticketId + '</strong> tickets successfully.';
|
||||
factory.messages.error = 'Could not remove <strong>' + ticketId + '</strong> tickets.';
|
||||
} else {
|
||||
factory.url = urls.destroy.single;
|
||||
factory.data = {ticketGrantingTicket: factory.ticketId};
|
||||
factory.messages.success = 'Ticket is removed successfully.';
|
||||
factory.messages.error = 'Ticket is not removed successfully.';
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: factory.url,
|
||||
//data: { ticketGrantingTicket: factory.ticketId, type: 'ALL' },
|
||||
data: factory.data,
|
||||
headers: factory.httpHeaders,
|
||||
dataType: 'json',
|
||||
success: function (data) {
|
||||
// Reinitialize the table data
|
||||
$('#ssoSessions').DataTable().ajax.reload();
|
||||
|
||||
if (data.status != 200) {
|
||||
alertUser(factory.messages.error, 'danger');
|
||||
} else {
|
||||
alertUser(factory.messages.success, 'success');
|
||||
// Reload the page
|
||||
location.reload();
|
||||
}
|
||||
},
|
||||
error: function () {
|
||||
alertUser('There appears to be an error. Please try your request again.', 'danger');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
var ssoSessions = (function () {
|
||||
var createDataTable = function () {
|
||||
$('#ssoSessions').DataTable({
|
||||
'order': [[3, 'desc']],
|
||||
'initComplete': function (settings, json) {
|
||||
if (!json || json.activeSsoSessions.length == 0) {
|
||||
$('#loadingMessage').hide();
|
||||
$('#no-cas-sessions').show();
|
||||
} else {
|
||||
updateAdminPanels(json);
|
||||
|
||||
$('#loadingMessage').hide();
|
||||
$('#no-cas-sessions').hide();
|
||||
$('#cas-sessions').show();
|
||||
}
|
||||
},
|
||||
'language': {
|
||||
//"infoEmpty": "No active sessions were found",
|
||||
'emptyTable': 'No sessions found',
|
||||
'zeroRecords': 'No matching sessions found'
|
||||
},
|
||||
'processing': true,
|
||||
'ajax': {
|
||||
'url': urls.getSessions,
|
||||
'dataSrc': 'activeSsoSessions'
|
||||
},
|
||||
|
||||
columnDefs: [
|
||||
{
|
||||
'targets': 0,
|
||||
'className': 'details-control',
|
||||
'orderable': false,
|
||||
'data': null,
|
||||
'defaultContent': ''
|
||||
},
|
||||
{
|
||||
'targets': 1,
|
||||
'data': 'is_proxied',
|
||||
'className': 'col-xs-2 col-md-1',
|
||||
'render': function (data) {
|
||||
if (data === true) {
|
||||
return '<span class="label label-primary">Proxy</span>';
|
||||
} else {
|
||||
return ' ';
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
'targets': 2,
|
||||
'data': 'authenticated_principal',
|
||||
'className': 'col-xs-4 col-md-2',
|
||||
'render': function (data, type) {
|
||||
return type === 'display' && data.length > 20 ?
|
||||
'<span title="' + data + '">' + data.substr(0, 18) + '...</span>' :
|
||||
data;
|
||||
}
|
||||
},
|
||||
{
|
||||
'targets': 3,
|
||||
'data': 'ticket_granting_ticket',
|
||||
'className': 'hidden-xs hidden-sm col-md-4',
|
||||
'render': function (data, type) {
|
||||
return type === 'display' && data.length > 20 ?
|
||||
'<span title="' + data + '">' + data.substr(0, 40) + '...</span>' :
|
||||
data;
|
||||
}
|
||||
},
|
||||
{
|
||||
'targets': 4,
|
||||
'data': 'authentication_date_formatted',
|
||||
'className': 'col-xs-4 col-sm-4 col-md-2'
|
||||
},
|
||||
{
|
||||
'targets': 5,
|
||||
'data': 'number_of_uses',
|
||||
'className': 'hidden-xs hidden-sm visible-md-* col-md-2'
|
||||
},
|
||||
{
|
||||
'targets': 6,
|
||||
'data': 'ticket_granting_ticket',
|
||||
'className': 'col-xs-2 col-sm-2 col-md-1',
|
||||
'render': function (data) {
|
||||
return '<button class="btn btn-xs btn-block btn-danger" type="button" value="' + data + '">Destroy</button>';
|
||||
},
|
||||
'orderable': false
|
||||
},
|
||||
]
|
||||
});
|
||||
};
|
||||
|
||||
var addEventHandlers = function () {
|
||||
|
||||
/**
|
||||
* The Bulk remove button
|
||||
*/
|
||||
$('#removeAllSessionsButton').on('click', function (e) {
|
||||
e.preventDefault();
|
||||
removeSession(this.value);
|
||||
});
|
||||
|
||||
/**
|
||||
* Individual removal button
|
||||
*/
|
||||
$(document).on('click', '#ssoSessions tbody tr td:last-child button.btn-danger', function (e) {
|
||||
e.preventDefault();
|
||||
removeSession(this.value);
|
||||
});
|
||||
|
||||
/**
|
||||
* The filter buttons
|
||||
*/
|
||||
$('#filterButtons .btn').click(function () {
|
||||
|
||||
var filter = $(this).data('filter');
|
||||
var table = $('#ssoSessions').DataTable();
|
||||
var filterRegex;
|
||||
var deleteValue;
|
||||
var btnText;
|
||||
|
||||
// Create Filter RegEx:
|
||||
if (filter == 'proxied') {
|
||||
filterRegex = '^Proxy$';
|
||||
deleteValue = 'PROXIED';
|
||||
btnText = 'Remove <span class="badge">xx</span> Proxied Sessions';
|
||||
} else if (filter == 'non-proxied') {
|
||||
filterRegex = '^ $';
|
||||
deleteValue = 'DIRECT';
|
||||
btnText = 'Remove <span class="badge">xx</span> Non-Proxied Sessions';
|
||||
} else {
|
||||
filterRegex = '';
|
||||
deleteValue = 'ALL';
|
||||
btnText = 'Remove All Sessions';
|
||||
}
|
||||
|
||||
var searchTerm = table.column(1).search(filterRegex, true, false).draw();
|
||||
|
||||
$('#removeAllSessionsButton').val(deleteValue).html(btnText.replace('xx', searchTerm.page.info().recordsDisplay));
|
||||
});
|
||||
|
||||
|
||||
// Add event listener for opening and closing details
|
||||
$(document).on('click', '#ssoSessions tbody td.details-control', function () {
|
||||
var table = $('#ssoSessions').DataTable();
|
||||
var tr = $(this).closest('tr');
|
||||
var row = table.row(tr);
|
||||
|
||||
if (row.child.isShown()) {
|
||||
// This row is already open - close it
|
||||
row.child.hide();
|
||||
tr.removeClass('shown');
|
||||
}
|
||||
else {
|
||||
// Open this row
|
||||
row.child(format(row.data()), 'info').show();
|
||||
tr.addClass('shown');
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
// initialization *******
|
||||
(function init() {
|
||||
addEventHandlers();
|
||||
createDataTable();
|
||||
})();
|
||||
|
||||
// Public Methods
|
||||
return {
|
||||
/**
|
||||
* Not used
|
||||
*/
|
||||
};
|
||||
})();
|
||||
@@ -0,0 +1,208 @@
|
||||
/* global d3 */
|
||||
/*eslint-disable no-unused-vars*/
|
||||
var Gauge = function (wrapper, percent, options) {
|
||||
if (!wrapper || !percent) {
|
||||
//console.error('wrapper and percentage are required. Please check your code.');
|
||||
return;
|
||||
}
|
||||
|
||||
var label = (!options.label) ? '' : options.label;
|
||||
|
||||
var textClass = options.textClass || 'progress-meter';
|
||||
|
||||
var width = options.width || 200,
|
||||
height = options.height || 200,
|
||||
twoPi = 2 * Math.PI,
|
||||
progress = 0,
|
||||
total = 100,
|
||||
formatPercent = d3.format('.0%');
|
||||
|
||||
var colorScale = d3.scaleLinear()
|
||||
.domain([0, 0.40, 0.50, 1])
|
||||
.range(['green', 'green', 'goldenrod', 'red']);
|
||||
|
||||
var arc = d3.arc()
|
||||
.startAngle(0)
|
||||
.innerRadius(width * 0.4)
|
||||
.outerRadius(width * 0.5)
|
||||
;
|
||||
|
||||
var svg = d3.select(wrapper).append('svg')
|
||||
.attr('width', width)
|
||||
.attr('height', height)
|
||||
|
||||
.attr('fill', '#2E7AF9')
|
||||
.append('g')
|
||||
.attr('transform', 'translate(' + width / 2 + ',' + height / 2 + ')');
|
||||
|
||||
var meter = svg.append('g')
|
||||
.attr('class', textClass);
|
||||
|
||||
meter.append('path')
|
||||
.attr('class', 'background')
|
||||
.attr('d', arc.endAngle(twoPi));
|
||||
|
||||
var foreground = meter.append('path')
|
||||
.attr('class', 'foreground');
|
||||
|
||||
var text = meter.append('text')
|
||||
.attr('text-anchor', 'middle');
|
||||
|
||||
var text2 = meter.append('text')
|
||||
.attr('y', height * 0.15)
|
||||
.attr('text-anchor', 'middle')
|
||||
.attr('class', 'text2');
|
||||
|
||||
text2.text(label);
|
||||
|
||||
var animate = function (percentage) {
|
||||
var i = d3.interpolate(progress, percentage);
|
||||
|
||||
foreground.transition().duration(2000)
|
||||
.tween('progress', function () {
|
||||
|
||||
return function (t) {
|
||||
progress = i(t);
|
||||
|
||||
foreground.style('fill', colorScale(progress));
|
||||
foreground.attr('d', arc.endAngle(twoPi * progress));
|
||||
text.text(formatPercent(progress));
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
// init
|
||||
(function () {
|
||||
setTimeout(function () {
|
||||
animate(percent);
|
||||
}, 500);
|
||||
})();
|
||||
|
||||
return {
|
||||
update: function (newPercent) {
|
||||
animate(newPercent);
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
function upTime(countTo, el) {
|
||||
var wrapper = document.getElementById('card-uptime');
|
||||
var element = document.getElementById(el);
|
||||
var difference = new Date(countTo*1000);
|
||||
|
||||
var days = Math.floor(difference / (60 * 60 * 1000 * 24) * 1);
|
||||
var hours = Math.floor((difference % (60 * 60 * 1000 * 24)) / (60 * 60 * 1000) * 1);
|
||||
var mins = Math.floor(((difference % (60 * 60 * 1000 * 24)) % (60 * 60 * 1000)) / (60 * 1000) * 1);
|
||||
var secs = Math.floor((((difference % (60 * 60 * 1000 * 24)) % (60 * 60 * 1000)) % (60 * 1000)) / 1000 * 1);
|
||||
|
||||
clearTimeout(upTime.to);
|
||||
|
||||
if (isNaN(days) || isNaN(hours) || isNaN(mins) || isNaN(secs) ) {
|
||||
wrapper.style.display = 'none';
|
||||
} else {
|
||||
days = (days == 1) ? days + ' day ' : days + ' days ';
|
||||
hours = (hours == 1) ? hours + ' hour ' : hours + ' hours ';
|
||||
mins = (mins == 1) ? mins + ' minute ' : mins + ' minutes ';
|
||||
secs = (secs == 1) ? secs + ' second ' : secs + ' seconds';
|
||||
|
||||
var timeString = '<span class="upTime">' + days + hours + mins + secs + '</span>';
|
||||
element.innerHTML = timeString;
|
||||
wrapper.style.display = 'block';
|
||||
|
||||
upTime.to = setTimeout(function() {
|
||||
countTo = countTo + 1;
|
||||
upTime(countTo, el);
|
||||
},1000);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
var analytics = document.getElementById('expiredSts');
|
||||
|
||||
var casStatistics = function (urls, messages) {
|
||||
var timers = {
|
||||
memory: 5000,
|
||||
availability: 15000,
|
||||
tickets: 5000
|
||||
};
|
||||
|
||||
var memoryGauage;
|
||||
|
||||
var getRemoteJSON = function(url) {
|
||||
return $.getJSON( url);
|
||||
};
|
||||
|
||||
var tickets = function() {
|
||||
var data = getRemoteJSON(urls.tickets);
|
||||
data.done(function( data ) {
|
||||
updateElementValue( 'unexpiredTgts', data.unexpiredTgts );
|
||||
updateElementValue( 'unexpiredSts', data.unexpiredSts );
|
||||
updateElementValue( 'expiredTgts', data.expiredTgts );
|
||||
updateElementValue( 'expiredSts', data.expiredSts );
|
||||
setTimeout( tickets, timers.tickets );
|
||||
});
|
||||
};
|
||||
|
||||
var updateElementValue = function(el, val) {
|
||||
$( '#' + el ).text( val );
|
||||
};
|
||||
|
||||
var memory = function() {
|
||||
var data = getRemoteJSON(urls.memory);
|
||||
data.done(function( data ) {
|
||||
updateElementValue('freeMemory', data.freeMemory.toFixed(2));
|
||||
// updateElementValue('totalMemory', data.totalMemory);
|
||||
// updateElementValue('maxMemory', data.maxMemory);
|
||||
// updateElementValue('availableProcessors', data.availableProcessors);
|
||||
|
||||
var memCalc = (data.totalMemory / data.maxMemory).toFixed(2);
|
||||
|
||||
if ( !memoryGauage ) {
|
||||
memoryGauage = new Gauge('#maxMemoryGauge', memCalc, {width: 200, height: 200,
|
||||
label: messages.memoryGaugeTitle,
|
||||
textClass: 'runtimeStatistics'});
|
||||
} else {
|
||||
memoryGauage.update( memCalc );
|
||||
}
|
||||
|
||||
setTimeout( memory, timers.memory );
|
||||
});
|
||||
|
||||
};
|
||||
var availability = function() {
|
||||
var data = getRemoteJSON(urls.availability);
|
||||
data.done(function( data ) {
|
||||
updateElementValue('upTime', data.upTime);
|
||||
setTimeout( availability, timers.availability );
|
||||
});
|
||||
};
|
||||
|
||||
// initialization *******
|
||||
( function init () {
|
||||
$('#loading, .statisticsView').toggle();
|
||||
tickets();
|
||||
memory();
|
||||
// availability();
|
||||
})();
|
||||
|
||||
// Public Methods
|
||||
return {
|
||||
getTickets: function() {
|
||||
return tickets();
|
||||
},
|
||||
getMemory: function() {
|
||||
return memory();
|
||||
},
|
||||
getAvailability: function() {
|
||||
return availability();
|
||||
},
|
||||
updateGauge: function(val){
|
||||
if (memoryGauage) {
|
||||
memoryGauage.update( val );
|
||||
} else {
|
||||
return 'unable to update';
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,474 @@
|
||||
// Generated by CoffeeScript 1.7.1
|
||||
|
||||
/*
|
||||
Stomp Over WebSocket http://www.jmesnil.net/stomp-websocket/doc/ | Apache License V2.0
|
||||
|
||||
Copyright (C) 2010-2013 [Jeff Mesnil](http://jmesnil.net/)
|
||||
Copyright (C) 2012 [FuseSource, Inc.](http://fusesource.com)
|
||||
*/
|
||||
|
||||
(function() {
|
||||
var Byte, Client, Frame, Stomp,
|
||||
__hasProp = {}.hasOwnProperty,
|
||||
__slice = [].slice;
|
||||
|
||||
Byte = {
|
||||
LF: '\x0A',
|
||||
NULL: '\x00'
|
||||
};
|
||||
|
||||
Frame = (function() {
|
||||
var unmarshallSingle;
|
||||
|
||||
function Frame(command, headers, body) {
|
||||
this.command = command;
|
||||
this.headers = headers != null ? headers : {};
|
||||
this.body = body != null ? body : '';
|
||||
}
|
||||
|
||||
Frame.prototype.toString = function() {
|
||||
var lines, name, value, _ref;
|
||||
lines = [this.command];
|
||||
_ref = this.headers;
|
||||
for (name in _ref) {
|
||||
if (!__hasProp.call(_ref, name)) continue;
|
||||
value = _ref[name];
|
||||
lines.push("" + name + ":" + value);
|
||||
}
|
||||
if (this.body) {
|
||||
lines.push("content-length:" + (Frame.sizeOfUTF8(this.body)));
|
||||
}
|
||||
lines.push(Byte.LF + this.body);
|
||||
return lines.join(Byte.LF);
|
||||
};
|
||||
|
||||
Frame.sizeOfUTF8 = function(s) {
|
||||
if (s) {
|
||||
return encodeURI(s).split(/%..|./).length - 1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
|
||||
unmarshallSingle = function(data) {
|
||||
var body, chr, command, divider, headerLines, headers, i, idx, len, line, start, trim, _i, _j, _len, _ref, _ref1;
|
||||
divider = data.search(RegExp("" + Byte.LF + Byte.LF));
|
||||
headerLines = data.substring(0, divider).split(Byte.LF);
|
||||
command = headerLines.shift();
|
||||
headers = {};
|
||||
trim = function(str) {
|
||||
return str.replace(/^\s+|\s+$/g, '');
|
||||
};
|
||||
_ref = headerLines.reverse();
|
||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||
line = _ref[_i];
|
||||
idx = line.indexOf(':');
|
||||
headers[trim(line.substring(0, idx))] = trim(line.substring(idx + 1));
|
||||
}
|
||||
body = '';
|
||||
start = divider + 2;
|
||||
if (headers['content-length']) {
|
||||
len = parseInt(headers['content-length']);
|
||||
body = ('' + data).substring(start, start + len);
|
||||
} else {
|
||||
chr = null;
|
||||
for (i = _j = start, _ref1 = data.length; start <= _ref1 ? _j < _ref1 : _j > _ref1; i = start <= _ref1 ? ++_j : --_j) {
|
||||
chr = data.charAt(i);
|
||||
if (chr === Byte.NULL) {
|
||||
break;
|
||||
}
|
||||
body += chr;
|
||||
}
|
||||
}
|
||||
return new Frame(command, headers, body);
|
||||
};
|
||||
|
||||
Frame.unmarshall = function(datas) {
|
||||
var data;
|
||||
return (function() {
|
||||
var _i, _len, _ref, _results;
|
||||
_ref = datas.split(RegExp("" + Byte.NULL + Byte.LF + "*"));
|
||||
_results = [];
|
||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||
data = _ref[_i];
|
||||
if ((data != null ? data.length : void 0) > 0) {
|
||||
_results.push(unmarshallSingle(data));
|
||||
}
|
||||
}
|
||||
return _results;
|
||||
})();
|
||||
};
|
||||
|
||||
Frame.marshall = function(command, headers, body) {
|
||||
var frame;
|
||||
frame = new Frame(command, headers, body);
|
||||
return frame.toString() + Byte.NULL;
|
||||
};
|
||||
|
||||
return Frame;
|
||||
|
||||
})();
|
||||
|
||||
Client = (function() {
|
||||
var now;
|
||||
|
||||
function Client(ws) {
|
||||
this.ws = ws;
|
||||
this.ws.binaryType = "arraybuffer";
|
||||
this.counter = 0;
|
||||
this.connected = false;
|
||||
this.heartbeat = {
|
||||
outgoing: 10000,
|
||||
incoming: 10000
|
||||
};
|
||||
this.maxWebSocketFrameSize = 16 * 1024;
|
||||
this.subscriptions = {};
|
||||
}
|
||||
|
||||
Client.prototype.debug = function(message) {
|
||||
void 0;
|
||||
};
|
||||
|
||||
now = function() {
|
||||
return Date.now || new Date().valueOf;
|
||||
};
|
||||
|
||||
Client.prototype._transmit = function(command, headers, body) {
|
||||
var out;
|
||||
out = Frame.marshall(command, headers, body);
|
||||
if (typeof this.debug === "function") {
|
||||
this.debug(">>> " + out);
|
||||
}
|
||||
while (true) {
|
||||
if (out.length > this.maxWebSocketFrameSize) {
|
||||
this.ws.send(out.substring(0, this.maxWebSocketFrameSize));
|
||||
out = out.substring(this.maxWebSocketFrameSize);
|
||||
if (typeof this.debug === "function") {
|
||||
this.debug("remaining = " + out.length);
|
||||
}
|
||||
} else {
|
||||
return this.ws.send(out);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Client.prototype._setupHeartbeat = function(headers) {
|
||||
var serverIncoming, serverOutgoing, ttl, v, _ref, _ref1;
|
||||
if ((_ref = headers.version) !== Stomp.VERSIONS.V1_1 && _ref !== Stomp.VERSIONS.V1_2) {
|
||||
return;
|
||||
}
|
||||
_ref1 = (function() {
|
||||
var _i, _len, _ref1, _results;
|
||||
_ref1 = headers['heart-beat'].split(",");
|
||||
_results = [];
|
||||
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
|
||||
v = _ref1[_i];
|
||||
_results.push(parseInt(v));
|
||||
}
|
||||
return _results;
|
||||
})(), serverOutgoing = _ref1[0], serverIncoming = _ref1[1];
|
||||
if (!(this.heartbeat.outgoing === 0 || serverIncoming === 0)) {
|
||||
ttl = Math.max(this.heartbeat.outgoing, serverIncoming);
|
||||
if (typeof this.debug === "function") {
|
||||
this.debug("send PING every " + ttl + "ms");
|
||||
}
|
||||
this.pinger = Stomp.setInterval(ttl, (function(_this) {
|
||||
return function() {
|
||||
_this.ws.send(Byte.LF);
|
||||
return typeof _this.debug === "function" ? _this.debug(">>> PING") : void 0;
|
||||
};
|
||||
})(this));
|
||||
}
|
||||
if (!(this.heartbeat.incoming === 0 || serverOutgoing === 0)) {
|
||||
ttl = Math.max(this.heartbeat.incoming, serverOutgoing);
|
||||
if (typeof this.debug === "function") {
|
||||
this.debug("check PONG every " + ttl + "ms");
|
||||
}
|
||||
return this.ponger = Stomp.setInterval(ttl, (function(_this) {
|
||||
return function() {
|
||||
var delta;
|
||||
delta = now() - _this.serverActivity;
|
||||
if (delta > ttl * 2) {
|
||||
if (typeof _this.debug === "function") {
|
||||
_this.debug("did not receive server activity for the last " + delta + "ms");
|
||||
}
|
||||
return _this.ws.close();
|
||||
}
|
||||
};
|
||||
})(this));
|
||||
}
|
||||
};
|
||||
|
||||
Client.prototype._parseConnect = function() {
|
||||
var args, connectCallback, errorCallback, headers;
|
||||
args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
|
||||
headers = {};
|
||||
switch (args.length) {
|
||||
case 2:
|
||||
headers = args[0], connectCallback = args[1];
|
||||
break;
|
||||
case 3:
|
||||
if (args[1] instanceof Function) {
|
||||
headers = args[0], connectCallback = args[1], errorCallback = args[2];
|
||||
} else {
|
||||
headers.login = args[0], headers.passcode = args[1], connectCallback = args[2];
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
headers.login = args[0], headers.passcode = args[1], connectCallback = args[2], errorCallback = args[3];
|
||||
break;
|
||||
default:
|
||||
headers.login = args[0], headers.passcode = args[1], connectCallback = args[2], errorCallback = args[3], headers.host = args[4];
|
||||
}
|
||||
return [headers, connectCallback, errorCallback];
|
||||
};
|
||||
|
||||
Client.prototype.connect = function() {
|
||||
var args, errorCallback, headers, out;
|
||||
args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
|
||||
out = this._parseConnect.apply(this, args);
|
||||
headers = out[0], this.connectCallback = out[1], errorCallback = out[2];
|
||||
if (typeof this.debug === "function") {
|
||||
this.debug("Opening Web Socket...");
|
||||
}
|
||||
this.ws.onmessage = (function(_this) {
|
||||
return function(evt) {
|
||||
var arr, c, client, data, frame, messageID, onreceive, subscription, _i, _len, _ref, _results;
|
||||
data = typeof ArrayBuffer !== 'undefined' && evt.data instanceof ArrayBuffer ? (arr = new Uint8Array(evt.data), typeof _this.debug === "function" ? _this.debug("--- got data length: " + arr.length) : void 0, ((function() {
|
||||
var _i, _len, _results;
|
||||
_results = [];
|
||||
for (_i = 0, _len = arr.length; _i < _len; _i++) {
|
||||
c = arr[_i];
|
||||
_results.push(String.fromCharCode(c));
|
||||
}
|
||||
return _results;
|
||||
})()).join('')) : evt.data;
|
||||
_this.serverActivity = now();
|
||||
if (data === Byte.LF) {
|
||||
if (typeof _this.debug === "function") {
|
||||
_this.debug("<<< PONG");
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (typeof _this.debug === "function") {
|
||||
_this.debug("<<< " + data);
|
||||
}
|
||||
_ref = Frame.unmarshall(data);
|
||||
_results = [];
|
||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||
frame = _ref[_i];
|
||||
switch (frame.command) {
|
||||
case "CONNECTED":
|
||||
if (typeof _this.debug === "function") {
|
||||
_this.debug("connected to server " + frame.headers.server);
|
||||
}
|
||||
_this.connected = true;
|
||||
_this._setupHeartbeat(frame.headers);
|
||||
_results.push(typeof _this.connectCallback === "function" ? _this.connectCallback(frame) : void 0);
|
||||
break;
|
||||
case "MESSAGE":
|
||||
subscription = frame.headers.subscription;
|
||||
onreceive = _this.subscriptions[subscription] || _this.onreceive;
|
||||
if (onreceive) {
|
||||
client = _this;
|
||||
messageID = frame.headers["message-id"];
|
||||
frame.ack = function(headers) {
|
||||
if (headers == null) {
|
||||
headers = {};
|
||||
}
|
||||
return client.ack(messageID, subscription, headers);
|
||||
};
|
||||
frame.nack = function(headers) {
|
||||
if (headers == null) {
|
||||
headers = {};
|
||||
}
|
||||
return client.nack(messageID, subscription, headers);
|
||||
};
|
||||
_results.push(onreceive(frame));
|
||||
} else {
|
||||
_results.push(typeof _this.debug === "function" ? _this.debug("Unhandled received MESSAGE: " + frame) : void 0);
|
||||
}
|
||||
break;
|
||||
case "RECEIPT":
|
||||
_results.push(typeof _this.onreceipt === "function" ? _this.onreceipt(frame) : void 0);
|
||||
break;
|
||||
case "ERROR":
|
||||
_results.push(typeof errorCallback === "function" ? errorCallback(frame) : void 0);
|
||||
break;
|
||||
default:
|
||||
_results.push(typeof _this.debug === "function" ? _this.debug("Unhandled frame: " + frame) : void 0);
|
||||
}
|
||||
}
|
||||
return _results;
|
||||
};
|
||||
})(this);
|
||||
this.ws.onclose = (function(_this) {
|
||||
return function() {
|
||||
var msg;
|
||||
msg = "Whoops! Lost connection to " + _this.ws.url;
|
||||
if (typeof _this.debug === "function") {
|
||||
_this.debug(msg);
|
||||
}
|
||||
_this._cleanUp();
|
||||
return typeof errorCallback === "function" ? errorCallback(msg) : void 0;
|
||||
};
|
||||
})(this);
|
||||
return this.ws.onopen = (function(_this) {
|
||||
return function() {
|
||||
if (typeof _this.debug === "function") {
|
||||
_this.debug('Web Socket Opened...');
|
||||
}
|
||||
headers["accept-version"] = Stomp.VERSIONS.supportedVersions();
|
||||
headers["heart-beat"] = [_this.heartbeat.outgoing, _this.heartbeat.incoming].join(',');
|
||||
return _this._transmit("CONNECT", headers);
|
||||
};
|
||||
})(this);
|
||||
};
|
||||
|
||||
Client.prototype.disconnect = function(disconnectCallback) {
|
||||
this._transmit("DISCONNECT");
|
||||
this.ws.onclose = null;
|
||||
this.ws.close();
|
||||
this._cleanUp();
|
||||
return typeof disconnectCallback === "function" ? disconnectCallback() : void 0;
|
||||
};
|
||||
|
||||
Client.prototype._cleanUp = function() {
|
||||
this.connected = false;
|
||||
if (this.pinger) {
|
||||
Stomp.clearInterval(this.pinger);
|
||||
}
|
||||
if (this.ponger) {
|
||||
return Stomp.clearInterval(this.ponger);
|
||||
}
|
||||
};
|
||||
|
||||
Client.prototype.send = function(destination, headers, body) {
|
||||
if (headers == null) {
|
||||
headers = {};
|
||||
}
|
||||
if (body == null) {
|
||||
body = '';
|
||||
}
|
||||
headers.destination = destination;
|
||||
return this._transmit("SEND", headers, body);
|
||||
};
|
||||
|
||||
Client.prototype.subscribe = function(destination, callback, headers) {
|
||||
var client;
|
||||
if (headers == null) {
|
||||
headers = {};
|
||||
}
|
||||
if (!headers.id) {
|
||||
headers.id = "sub-" + this.counter++;
|
||||
}
|
||||
headers.destination = destination;
|
||||
this.subscriptions[headers.id] = callback;
|
||||
this._transmit("SUBSCRIBE", headers);
|
||||
client = this;
|
||||
return {
|
||||
id: headers.id,
|
||||
unsubscribe: function() {
|
||||
return client.unsubscribe(headers.id);
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
Client.prototype.unsubscribe = function(id) {
|
||||
delete this.subscriptions[id];
|
||||
return this._transmit("UNSUBSCRIBE", {
|
||||
id: id
|
||||
});
|
||||
};
|
||||
|
||||
Client.prototype.begin = function(transaction) {
|
||||
var client, txid;
|
||||
txid = transaction || "tx-" + this.counter++;
|
||||
this._transmit("BEGIN", {
|
||||
transaction: txid
|
||||
});
|
||||
client = this;
|
||||
return {
|
||||
id: txid,
|
||||
commit: function() {
|
||||
return client.commit(txid);
|
||||
},
|
||||
abort: function() {
|
||||
return client.abort(txid);
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
Client.prototype.commit = function(transaction) {
|
||||
return this._transmit("COMMIT", {
|
||||
transaction: transaction
|
||||
});
|
||||
};
|
||||
|
||||
Client.prototype.abort = function(transaction) {
|
||||
return this._transmit("ABORT", {
|
||||
transaction: transaction
|
||||
});
|
||||
};
|
||||
|
||||
Client.prototype.ack = function(messageID, subscription, headers) {
|
||||
if (headers == null) {
|
||||
headers = {};
|
||||
}
|
||||
headers["message-id"] = messageID;
|
||||
headers.subscription = subscription;
|
||||
return this._transmit("ACK", headers);
|
||||
};
|
||||
|
||||
Client.prototype.nack = function(messageID, subscription, headers) {
|
||||
if (headers == null) {
|
||||
headers = {};
|
||||
}
|
||||
headers["message-id"] = messageID;
|
||||
headers.subscription = subscription;
|
||||
return this._transmit("NACK", headers);
|
||||
};
|
||||
|
||||
return Client;
|
||||
|
||||
})();
|
||||
|
||||
Stomp = {
|
||||
VERSIONS: {
|
||||
V1_0: '1.0',
|
||||
V1_1: '1.1',
|
||||
V1_2: '1.2',
|
||||
supportedVersions: function() {
|
||||
return '1.1,1.0';
|
||||
}
|
||||
},
|
||||
client: function(url, protocols) {
|
||||
var klass, ws;
|
||||
if (protocols == null) {
|
||||
protocols = ['v10.stomp', 'v11.stomp'];
|
||||
}
|
||||
klass = Stomp.WebSocketClass || WebSocket;
|
||||
ws = new klass(url, protocols);
|
||||
return new Client(ws);
|
||||
},
|
||||
over: function(ws) {
|
||||
return new Client(ws);
|
||||
},
|
||||
Frame: Frame
|
||||
};
|
||||
|
||||
if (typeof window !== "undefined" && window !== null) {
|
||||
Stomp.setInterval = function(interval, f) {
|
||||
return window.setInterval(f, interval);
|
||||
};
|
||||
Stomp.clearInterval = function(id) {
|
||||
return window.clearInterval(id);
|
||||
};
|
||||
window.Stomp = Stomp;
|
||||
} else if (typeof exports !== "undefined" && exports !== null) {
|
||||
exports.Stomp = Stomp;
|
||||
} else {
|
||||
self.Stomp = Stomp;
|
||||
}
|
||||
|
||||
}).call(this);
|
||||
@@ -0,0 +1,59 @@
|
||||
/*eslint-disable no-unused-vars*/
|
||||
$('#myTabs a').click(function (e) {
|
||||
e.preventDefault();
|
||||
$(this).tab('show');
|
||||
});
|
||||
|
||||
var revokeDevice = function (key) {
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: urls.revokeRecord,
|
||||
data: {'key': key},
|
||||
success: function () {
|
||||
var table = $('#trustedDevicesTable').DataTable();
|
||||
table
|
||||
.rows($('#' + key).parents('tr'))
|
||||
.remove()
|
||||
.draw();
|
||||
},
|
||||
error: function () {
|
||||
//console.log('Could not remove record');
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
var trustedDevices = (function () {
|
||||
var getData = function () {
|
||||
$.getJSON(urls.getRecords, function (data) {
|
||||
trustedDevicesTable(data);
|
||||
});
|
||||
};
|
||||
|
||||
var trustedDevicesTable = function (jsonData) {
|
||||
var t = $('#trustedDevicesTable').DataTable({
|
||||
'order': [[2, 'desc']],
|
||||
columnDefs: [
|
||||
{'width': '20%', 'targets': 0},
|
||||
{'width': '10%', 'targets': 1},
|
||||
{'width': '60%', 'targets': 2},
|
||||
{'width': '10%', 'targets': 3},
|
||||
{'width': '30%', 'targets': 4}
|
||||
]
|
||||
});
|
||||
for (var i = 0; i < jsonData.length; i++) {
|
||||
var rec = jsonData[i];
|
||||
t.row.add([
|
||||
rec.name,
|
||||
rec.principal,
|
||||
new Date(rec.date),
|
||||
rec.geography,
|
||||
'<button id=\'' + rec.key + '\' class=\'btn btn-sm btn-danger\' type=\'button\' value=\'ALL\' onclick=\'revokeDevice("' + rec.key + '")\'>Revoke</button>'
|
||||
]).draw(false);
|
||||
}
|
||||
};
|
||||
|
||||
// initialization *******
|
||||
(function init() {
|
||||
getData();
|
||||
})();
|
||||
})();
|
||||
@@ -0,0 +1,748 @@
|
||||
//Copyright 2014-2015 Google Inc. All rights reserved.
|
||||
|
||||
//Use of this source code is governed by a BSD-style
|
||||
//license that can be found in the LICENSE file or at
|
||||
//https://developers.google.com/open-source/licenses/bsd
|
||||
|
||||
/**
|
||||
* @fileoverview The U2F api.
|
||||
*/
|
||||
'use strict';
|
||||
|
||||
|
||||
/**
|
||||
* Namespace for the U2F api.
|
||||
* @type {Object}
|
||||
*/
|
||||
var u2f = u2f || {};
|
||||
|
||||
/**
|
||||
* FIDO U2F Javascript API Version
|
||||
* @number
|
||||
*/
|
||||
var js_api_version;
|
||||
|
||||
/**
|
||||
* The U2F extension id
|
||||
* @const {string}
|
||||
*/
|
||||
// The Chrome packaged app extension ID.
|
||||
// Uncomment this if you want to deploy a server instance that uses
|
||||
// the package Chrome app and does not require installing the U2F Chrome extension.
|
||||
u2f.EXTENSION_ID = 'kmendfapggjehodndflmmgagdbamhnfd';
|
||||
// The U2F Chrome extension ID.
|
||||
// Uncomment this if you want to deploy a server instance that uses
|
||||
// the U2F Chrome extension to authenticate.
|
||||
// u2f.EXTENSION_ID = 'pfboblefjcgdjicmnffhdgionmgcdmne';
|
||||
|
||||
|
||||
/**
|
||||
* Message types for messsages to/from the extension
|
||||
* @const
|
||||
* @enum {string}
|
||||
*/
|
||||
u2f.MessageTypes = {
|
||||
'U2F_REGISTER_REQUEST': 'u2f_register_request',
|
||||
'U2F_REGISTER_RESPONSE': 'u2f_register_response',
|
||||
'U2F_SIGN_REQUEST': 'u2f_sign_request',
|
||||
'U2F_SIGN_RESPONSE': 'u2f_sign_response',
|
||||
'U2F_GET_API_VERSION_REQUEST': 'u2f_get_api_version_request',
|
||||
'U2F_GET_API_VERSION_RESPONSE': 'u2f_get_api_version_response'
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Response status codes
|
||||
* @const
|
||||
* @enum {number}
|
||||
*/
|
||||
u2f.ErrorCodes = {
|
||||
'OK': 0,
|
||||
'OTHER_ERROR': 1,
|
||||
'BAD_REQUEST': 2,
|
||||
'CONFIGURATION_UNSUPPORTED': 3,
|
||||
'DEVICE_INELIGIBLE': 4,
|
||||
'TIMEOUT': 5
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* A message for registration requests
|
||||
* @typedef {{
|
||||
* type: u2f.MessageTypes,
|
||||
* appId: ?string,
|
||||
* timeoutSeconds: ?number,
|
||||
* requestId: ?number
|
||||
* }}
|
||||
*/
|
||||
u2f.U2fRequest;
|
||||
|
||||
|
||||
/**
|
||||
* A message for registration responses
|
||||
* @typedef {{
|
||||
* type: u2f.MessageTypes,
|
||||
* responseData: (u2f.Error | u2f.RegisterResponse | u2f.SignResponse),
|
||||
* requestId: ?number
|
||||
* }}
|
||||
*/
|
||||
u2f.U2fResponse;
|
||||
|
||||
|
||||
/**
|
||||
* An error object for responses
|
||||
* @typedef {{
|
||||
* errorCode: u2f.ErrorCodes,
|
||||
* errorMessage: ?string
|
||||
* }}
|
||||
*/
|
||||
u2f.Error;
|
||||
|
||||
/**
|
||||
* Data object for a single sign request.
|
||||
* @typedef {enum {BLUETOOTH_RADIO, BLUETOOTH_LOW_ENERGY, USB, NFC}}
|
||||
*/
|
||||
u2f.Transport;
|
||||
|
||||
|
||||
/**
|
||||
* Data object for a single sign request.
|
||||
* @typedef {Array<u2f.Transport>}
|
||||
*/
|
||||
u2f.Transports;
|
||||
|
||||
/**
|
||||
* Data object for a single sign request.
|
||||
* @typedef {{
|
||||
* version: string,
|
||||
* challenge: string,
|
||||
* keyHandle: string,
|
||||
* appId: string
|
||||
* }}
|
||||
*/
|
||||
u2f.SignRequest;
|
||||
|
||||
|
||||
/**
|
||||
* Data object for a sign response.
|
||||
* @typedef {{
|
||||
* keyHandle: string,
|
||||
* signatureData: string,
|
||||
* clientData: string
|
||||
* }}
|
||||
*/
|
||||
u2f.SignResponse;
|
||||
|
||||
|
||||
/**
|
||||
* Data object for a registration request.
|
||||
* @typedef {{
|
||||
* version: string,
|
||||
* challenge: string
|
||||
* }}
|
||||
*/
|
||||
u2f.RegisterRequest;
|
||||
|
||||
|
||||
/**
|
||||
* Data object for a registration response.
|
||||
* @typedef {{
|
||||
* version: string,
|
||||
* keyHandle: string,
|
||||
* transports: Transports,
|
||||
* appId: string
|
||||
* }}
|
||||
*/
|
||||
u2f.RegisterResponse;
|
||||
|
||||
|
||||
/**
|
||||
* Data object for a registered key.
|
||||
* @typedef {{
|
||||
* version: string,
|
||||
* keyHandle: string,
|
||||
* transports: ?Transports,
|
||||
* appId: ?string
|
||||
* }}
|
||||
*/
|
||||
u2f.RegisteredKey;
|
||||
|
||||
|
||||
/**
|
||||
* Data object for a get API register response.
|
||||
* @typedef {{
|
||||
* js_api_version: number
|
||||
* }}
|
||||
*/
|
||||
u2f.GetJsApiVersionResponse;
|
||||
|
||||
|
||||
//Low level MessagePort API support
|
||||
|
||||
/**
|
||||
* Sets up a MessagePort to the U2F extension using the
|
||||
* available mechanisms.
|
||||
* @param {function((MessagePort|u2f.WrappedChromeRuntimePort_))} callback
|
||||
*/
|
||||
u2f.getMessagePort = function(callback) {
|
||||
if (typeof chrome != 'undefined' && chrome.runtime) {
|
||||
// The actual message here does not matter, but we need to get a reply
|
||||
// for the callback to run. Thus, send an empty signature request
|
||||
// in order to get a failure response.
|
||||
var msg = {
|
||||
type: u2f.MessageTypes.U2F_SIGN_REQUEST,
|
||||
signRequests: []
|
||||
};
|
||||
chrome.runtime.sendMessage(u2f.EXTENSION_ID, msg, function() {
|
||||
if (!chrome.runtime.lastError) {
|
||||
// We are on a whitelisted origin and can talk directly
|
||||
// with the extension.
|
||||
u2f.getChromeRuntimePort_(callback);
|
||||
} else {
|
||||
// chrome.runtime was available, but we couldn't message
|
||||
// the extension directly, use iframe
|
||||
u2f.getIframePort_(callback);
|
||||
}
|
||||
});
|
||||
} else if (u2f.isAndroidChrome_()) {
|
||||
u2f.getAuthenticatorPort_(callback);
|
||||
} else if (u2f.isIosChrome_()) {
|
||||
u2f.getIosPort_(callback);
|
||||
} else {
|
||||
// chrome.runtime was not available at all, which is normal
|
||||
// when this origin doesn't have access to any extensions.
|
||||
u2f.getIframePort_(callback);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Detect chrome running on android based on the browser's useragent.
|
||||
* @private
|
||||
*/
|
||||
u2f.isAndroidChrome_ = function() {
|
||||
var userAgent = navigator.userAgent;
|
||||
return userAgent.indexOf('Chrome') != -1 &&
|
||||
userAgent.indexOf('Android') != -1;
|
||||
};
|
||||
|
||||
/**
|
||||
* Detect chrome running on iOS based on the browser's platform.
|
||||
* @private
|
||||
*/
|
||||
u2f.isIosChrome_ = function() {
|
||||
return ["iPhone", "iPad", "iPod"].indexOf(navigator.platform) > -1;
|
||||
};
|
||||
|
||||
/**
|
||||
* Connects directly to the extension via chrome.runtime.connect.
|
||||
* @param {function(u2f.WrappedChromeRuntimePort_)} callback
|
||||
* @private
|
||||
*/
|
||||
u2f.getChromeRuntimePort_ = function(callback) {
|
||||
var port = chrome.runtime.connect(u2f.EXTENSION_ID,
|
||||
{'includeTlsChannelId': true});
|
||||
setTimeout(function() {
|
||||
callback(new u2f.WrappedChromeRuntimePort_(port));
|
||||
}, 0);
|
||||
};
|
||||
|
||||
/**
|
||||
* Return a 'port' abstraction to the Authenticator app.
|
||||
* @param {function(u2f.WrappedAuthenticatorPort_)} callback
|
||||
* @private
|
||||
*/
|
||||
u2f.getAuthenticatorPort_ = function(callback) {
|
||||
setTimeout(function() {
|
||||
callback(new u2f.WrappedAuthenticatorPort_());
|
||||
}, 0);
|
||||
};
|
||||
|
||||
/**
|
||||
* Return a 'port' abstraction to the iOS client app.
|
||||
* @param {function(u2f.WrappedIosPort_)} callback
|
||||
* @private
|
||||
*/
|
||||
u2f.getIosPort_ = function(callback) {
|
||||
setTimeout(function() {
|
||||
callback(new u2f.WrappedIosPort_());
|
||||
}, 0);
|
||||
};
|
||||
|
||||
/**
|
||||
* A wrapper for chrome.runtime.Port that is compatible with MessagePort.
|
||||
* @param {Port} port
|
||||
* @constructor
|
||||
* @private
|
||||
*/
|
||||
u2f.WrappedChromeRuntimePort_ = function(port) {
|
||||
this.port_ = port;
|
||||
};
|
||||
|
||||
/**
|
||||
* Format and return a sign request compliant with the JS API version supported by the extension.
|
||||
* @param {Array<u2f.SignRequest>} signRequests
|
||||
* @param {number} timeoutSeconds
|
||||
* @param {number} reqId
|
||||
* @return {Object}
|
||||
*/
|
||||
u2f.formatSignRequest_ =
|
||||
function(appId, challenge, registeredKeys, timeoutSeconds, reqId) {
|
||||
if (js_api_version === undefined || js_api_version < 1.1) {
|
||||
// Adapt request to the 1.0 JS API
|
||||
var signRequests = [];
|
||||
for (var i = 0; i < registeredKeys.length; i++) {
|
||||
signRequests[i] = {
|
||||
version: registeredKeys[i].version,
|
||||
challenge: challenge,
|
||||
keyHandle: registeredKeys[i].keyHandle,
|
||||
appId: appId
|
||||
};
|
||||
}
|
||||
return {
|
||||
type: u2f.MessageTypes.U2F_SIGN_REQUEST,
|
||||
signRequests: signRequests,
|
||||
timeoutSeconds: timeoutSeconds,
|
||||
requestId: reqId
|
||||
};
|
||||
}
|
||||
// JS 1.1 API
|
||||
return {
|
||||
type: u2f.MessageTypes.U2F_SIGN_REQUEST,
|
||||
appId: appId,
|
||||
challenge: challenge,
|
||||
registeredKeys: registeredKeys,
|
||||
timeoutSeconds: timeoutSeconds,
|
||||
requestId: reqId
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* Format and return a register request compliant with the JS API version supported by the extension..
|
||||
* @param {Array<u2f.SignRequest>} signRequests
|
||||
* @param {Array<u2f.RegisterRequest>} signRequests
|
||||
* @param {number} timeoutSeconds
|
||||
* @param {number} reqId
|
||||
* @return {Object}
|
||||
*/
|
||||
u2f.formatRegisterRequest_ =
|
||||
function(appId, registeredKeys, registerRequests, timeoutSeconds, reqId) {
|
||||
if (js_api_version === undefined || js_api_version < 1.1) {
|
||||
// Adapt request to the 1.0 JS API
|
||||
for (var i = 0; i < registerRequests.length; i++) {
|
||||
registerRequests[i].appId = appId;
|
||||
}
|
||||
var signRequests = [];
|
||||
for (var i = 0; i < registeredKeys.length; i++) {
|
||||
signRequests[i] = {
|
||||
version: registeredKeys[i].version,
|
||||
challenge: registerRequests[0],
|
||||
keyHandle: registeredKeys[i].keyHandle,
|
||||
appId: appId
|
||||
};
|
||||
}
|
||||
return {
|
||||
type: u2f.MessageTypes.U2F_REGISTER_REQUEST,
|
||||
signRequests: signRequests,
|
||||
registerRequests: registerRequests,
|
||||
timeoutSeconds: timeoutSeconds,
|
||||
requestId: reqId
|
||||
};
|
||||
}
|
||||
// JS 1.1 API
|
||||
return {
|
||||
type: u2f.MessageTypes.U2F_REGISTER_REQUEST,
|
||||
appId: appId,
|
||||
registerRequests: registerRequests,
|
||||
registeredKeys: registeredKeys,
|
||||
timeoutSeconds: timeoutSeconds,
|
||||
requestId: reqId
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Posts a message on the underlying channel.
|
||||
* @param {Object} message
|
||||
*/
|
||||
u2f.WrappedChromeRuntimePort_.prototype.postMessage = function(message) {
|
||||
this.port_.postMessage(message);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Emulates the HTML 5 addEventListener interface. Works only for the
|
||||
* onmessage event, which is hooked up to the chrome.runtime.Port.onMessage.
|
||||
* @param {string} eventName
|
||||
* @param {function({data: Object})} handler
|
||||
*/
|
||||
u2f.WrappedChromeRuntimePort_.prototype.addEventListener =
|
||||
function(eventName, handler) {
|
||||
var name = eventName.toLowerCase();
|
||||
if (name == 'message' || name == 'onmessage') {
|
||||
this.port_.onMessage.addListener(function(message) {
|
||||
// Emulate a minimal MessageEvent object
|
||||
handler({'data': message});
|
||||
});
|
||||
} else {
|
||||
console.error('WrappedChromeRuntimePort only supports onMessage');
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Wrap the Authenticator app with a MessagePort interface.
|
||||
* @constructor
|
||||
* @private
|
||||
*/
|
||||
u2f.WrappedAuthenticatorPort_ = function() {
|
||||
this.requestId_ = -1;
|
||||
this.requestObject_ = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Launch the Authenticator intent.
|
||||
* @param {Object} message
|
||||
*/
|
||||
u2f.WrappedAuthenticatorPort_.prototype.postMessage = function(message) {
|
||||
var intentUrl =
|
||||
u2f.WrappedAuthenticatorPort_.INTENT_URL_BASE_ +
|
||||
';S.request=' + encodeURIComponent(JSON.stringify(message)) +
|
||||
';end';
|
||||
document.location = intentUrl;
|
||||
};
|
||||
|
||||
/**
|
||||
* Tells what type of port this is.
|
||||
* @return {String} port type
|
||||
*/
|
||||
u2f.WrappedAuthenticatorPort_.prototype.getPortType = function() {
|
||||
return "WrappedAuthenticatorPort_";
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Emulates the HTML 5 addEventListener interface.
|
||||
* @param {string} eventName
|
||||
* @param {function({data: Object})} handler
|
||||
*/
|
||||
u2f.WrappedAuthenticatorPort_.prototype.addEventListener = function(eventName, handler) {
|
||||
var name = eventName.toLowerCase();
|
||||
if (name == 'message') {
|
||||
var self = this;
|
||||
/* Register a callback to that executes when
|
||||
* chrome injects the response. */
|
||||
window.addEventListener(
|
||||
'message', self.onRequestUpdate_.bind(self, handler), false);
|
||||
} else {
|
||||
console.error('WrappedAuthenticatorPort only supports message');
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Callback invoked when a response is received from the Authenticator.
|
||||
* @param function({data: Object}) callback
|
||||
* @param {Object} message message Object
|
||||
*/
|
||||
u2f.WrappedAuthenticatorPort_.prototype.onRequestUpdate_ =
|
||||
function(callback, message) {
|
||||
var messageObject = JSON.parse(message.data);
|
||||
var intentUrl = messageObject['intentURL'];
|
||||
|
||||
var errorCode = messageObject['errorCode'];
|
||||
var responseObject = null;
|
||||
if (messageObject.hasOwnProperty('data')) {
|
||||
responseObject = /** @type {Object} */ (
|
||||
JSON.parse(messageObject['data']));
|
||||
}
|
||||
|
||||
callback({'data': responseObject});
|
||||
};
|
||||
|
||||
/**
|
||||
* Base URL for intents to Authenticator.
|
||||
* @const
|
||||
* @private
|
||||
*/
|
||||
u2f.WrappedAuthenticatorPort_.INTENT_URL_BASE_ =
|
||||
'intent:#Intent;action=com.google.android.apps.authenticator.AUTHENTICATE';
|
||||
|
||||
/**
|
||||
* Wrap the iOS client app with a MessagePort interface.
|
||||
* @constructor
|
||||
* @private
|
||||
*/
|
||||
u2f.WrappedIosPort_ = function() {};
|
||||
|
||||
/**
|
||||
* Launch the iOS client app request
|
||||
* @param {Object} message
|
||||
*/
|
||||
u2f.WrappedIosPort_.prototype.postMessage = function(message) {
|
||||
var str = JSON.stringify(message);
|
||||
var url = "u2f://auth?" + encodeURI(str);
|
||||
location.replace(url);
|
||||
};
|
||||
|
||||
/**
|
||||
* Tells what type of port this is.
|
||||
* @return {String} port type
|
||||
*/
|
||||
u2f.WrappedIosPort_.prototype.getPortType = function() {
|
||||
return "WrappedIosPort_";
|
||||
};
|
||||
|
||||
/**
|
||||
* Emulates the HTML 5 addEventListener interface.
|
||||
* @param {string} eventName
|
||||
* @param {function({data: Object})} handler
|
||||
*/
|
||||
u2f.WrappedIosPort_.prototype.addEventListener = function(eventName, handler) {
|
||||
var name = eventName.toLowerCase();
|
||||
if (name !== 'message') {
|
||||
console.error('WrappedIosPort only supports message');
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Sets up an embedded trampoline iframe, sourced from the extension.
|
||||
* @param {function(MessagePort)} callback
|
||||
* @private
|
||||
*/
|
||||
u2f.getIframePort_ = function(callback) {
|
||||
// Create the iframe
|
||||
var iframeOrigin = 'chrome-extension://' + u2f.EXTENSION_ID;
|
||||
var iframe = document.createElement('iframe');
|
||||
iframe.src = iframeOrigin + '/u2f-comms.html';
|
||||
iframe.setAttribute('style', 'display:none');
|
||||
document.body.appendChild(iframe);
|
||||
|
||||
var channel = new MessageChannel();
|
||||
var ready = function(message) {
|
||||
if (message.data == 'ready') {
|
||||
channel.port1.removeEventListener('message', ready);
|
||||
callback(channel.port1);
|
||||
} else {
|
||||
console.error('First event on iframe port was not "ready"');
|
||||
}
|
||||
};
|
||||
channel.port1.addEventListener('message', ready);
|
||||
channel.port1.start();
|
||||
|
||||
iframe.addEventListener('load', function() {
|
||||
// Deliver the port to the iframe and initialize
|
||||
iframe.contentWindow.postMessage('init', iframeOrigin, [channel.port2]);
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
//High-level JS API
|
||||
|
||||
/**
|
||||
* Default extension response timeout in seconds.
|
||||
* @const
|
||||
*/
|
||||
u2f.EXTENSION_TIMEOUT_SEC = 30;
|
||||
|
||||
/**
|
||||
* A singleton instance for a MessagePort to the extension.
|
||||
* @type {MessagePort|u2f.WrappedChromeRuntimePort_}
|
||||
* @private
|
||||
*/
|
||||
u2f.port_ = null;
|
||||
|
||||
/**
|
||||
* Callbacks waiting for a port
|
||||
* @type {Array<function((MessagePort|u2f.WrappedChromeRuntimePort_))>}
|
||||
* @private
|
||||
*/
|
||||
u2f.waitingForPort_ = [];
|
||||
|
||||
/**
|
||||
* A counter for requestIds.
|
||||
* @type {number}
|
||||
* @private
|
||||
*/
|
||||
u2f.reqCounter_ = 0;
|
||||
|
||||
/**
|
||||
* A map from requestIds to client callbacks
|
||||
* @type {Object.<number,(function((u2f.Error|u2f.RegisterResponse))
|
||||
* |function((u2f.Error|u2f.SignResponse)))>}
|
||||
* @private
|
||||
*/
|
||||
u2f.callbackMap_ = {};
|
||||
|
||||
/**
|
||||
* Creates or retrieves the MessagePort singleton to use.
|
||||
* @param {function((MessagePort|u2f.WrappedChromeRuntimePort_))} callback
|
||||
* @private
|
||||
*/
|
||||
u2f.getPortSingleton_ = function(callback) {
|
||||
if (u2f.port_) {
|
||||
callback(u2f.port_);
|
||||
} else {
|
||||
if (u2f.waitingForPort_.length == 0) {
|
||||
u2f.getMessagePort(function(port) {
|
||||
u2f.port_ = port;
|
||||
u2f.port_.addEventListener('message',
|
||||
/** @type {function(Event)} */ (u2f.responseHandler_));
|
||||
|
||||
// Careful, here be async callbacks. Maybe.
|
||||
while (u2f.waitingForPort_.length)
|
||||
u2f.waitingForPort_.shift()(u2f.port_);
|
||||
});
|
||||
}
|
||||
u2f.waitingForPort_.push(callback);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Handles response messages from the extension.
|
||||
* @param {MessageEvent.<u2f.Response>} message
|
||||
* @private
|
||||
*/
|
||||
u2f.responseHandler_ = function(message) {
|
||||
var response = message.data;
|
||||
var reqId = response['requestId'];
|
||||
if (!reqId || !u2f.callbackMap_[reqId]) {
|
||||
console.error('Unknown or missing requestId in response.');
|
||||
return;
|
||||
}
|
||||
var cb = u2f.callbackMap_[reqId];
|
||||
delete u2f.callbackMap_[reqId];
|
||||
cb(response['responseData']);
|
||||
};
|
||||
|
||||
/**
|
||||
* Dispatches an array of sign requests to available U2F tokens.
|
||||
* If the JS API version supported by the extension is unknown, it first sends a
|
||||
* message to the extension to find out the supported API version and then it sends
|
||||
* the sign request.
|
||||
* @param {string=} appId
|
||||
* @param {string=} challenge
|
||||
* @param {Array<u2f.RegisteredKey>} registeredKeys
|
||||
* @param {function((u2f.Error|u2f.SignResponse))} callback
|
||||
* @param {number=} opt_timeoutSeconds
|
||||
*/
|
||||
u2f.sign = function(appId, challenge, registeredKeys, callback, opt_timeoutSeconds) {
|
||||
if (js_api_version === undefined) {
|
||||
// Send a message to get the extension to JS API version, then send the actual sign request.
|
||||
u2f.getApiVersion(
|
||||
function (response) {
|
||||
js_api_version = response['js_api_version'] === undefined ? 0 : response['js_api_version'];
|
||||
console.log("Extension JS API Version: ", js_api_version);
|
||||
u2f.sendSignRequest(appId, challenge, registeredKeys, callback, opt_timeoutSeconds);
|
||||
});
|
||||
} else {
|
||||
// We know the JS API version. Send the actual sign request in the supported API version.
|
||||
u2f.sendSignRequest(appId, challenge, registeredKeys, callback, opt_timeoutSeconds);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Dispatches an array of sign requests to available U2F tokens.
|
||||
* @param {string=} appId
|
||||
* @param {string=} challenge
|
||||
* @param {Array<u2f.RegisteredKey>} registeredKeys
|
||||
* @param {function((u2f.Error|u2f.SignResponse))} callback
|
||||
* @param {number=} opt_timeoutSeconds
|
||||
*/
|
||||
u2f.sendSignRequest = function(appId, challenge, registeredKeys, callback, opt_timeoutSeconds) {
|
||||
u2f.getPortSingleton_(function(port) {
|
||||
var reqId = ++u2f.reqCounter_;
|
||||
u2f.callbackMap_[reqId] = callback;
|
||||
var timeoutSeconds = (typeof opt_timeoutSeconds !== 'undefined' ?
|
||||
opt_timeoutSeconds : u2f.EXTENSION_TIMEOUT_SEC);
|
||||
var req = u2f.formatSignRequest_(appId, challenge, registeredKeys, timeoutSeconds, reqId);
|
||||
port.postMessage(req);
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Dispatches register requests to available U2F tokens. An array of sign
|
||||
* requests identifies already registered tokens.
|
||||
* If the JS API version supported by the extension is unknown, it first sends a
|
||||
* message to the extension to find out the supported API version and then it sends
|
||||
* the register request.
|
||||
* @param {string=} appId
|
||||
* @param {Array<u2f.RegisterRequest>} registerRequests
|
||||
* @param {Array<u2f.RegisteredKey>} registeredKeys
|
||||
* @param {function((u2f.Error|u2f.RegisterResponse))} callback
|
||||
* @param {number=} opt_timeoutSeconds
|
||||
*/
|
||||
u2f.register = function(appId, registerRequests, registeredKeys, callback, opt_timeoutSeconds) {
|
||||
if (js_api_version === undefined) {
|
||||
// Send a message to get the extension to JS API version, then send the actual register request.
|
||||
u2f.getApiVersion(
|
||||
function (response) {
|
||||
js_api_version = response['js_api_version'] === undefined ? 0: response['js_api_version'];
|
||||
console.log("Extension JS API Version: ", js_api_version);
|
||||
u2f.sendRegisterRequest(appId, registerRequests, registeredKeys,
|
||||
callback, opt_timeoutSeconds);
|
||||
});
|
||||
} else {
|
||||
// We know the JS API version. Send the actual register request in the supported API version.
|
||||
u2f.sendRegisterRequest(appId, registerRequests, registeredKeys,
|
||||
callback, opt_timeoutSeconds);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Dispatches register requests to available U2F tokens. An array of sign
|
||||
* requests identifies already registered tokens.
|
||||
* @param {string=} appId
|
||||
* @param {Array<u2f.RegisterRequest>} registerRequests
|
||||
* @param {Array<u2f.RegisteredKey>} registeredKeys
|
||||
* @param {function((u2f.Error|u2f.RegisterResponse))} callback
|
||||
* @param {number=} opt_timeoutSeconds
|
||||
*/
|
||||
u2f.sendRegisterRequest = function(appId, registerRequests, registeredKeys, callback, opt_timeoutSeconds) {
|
||||
u2f.getPortSingleton_(function(port) {
|
||||
var reqId = ++u2f.reqCounter_;
|
||||
u2f.callbackMap_[reqId] = callback;
|
||||
var timeoutSeconds = (typeof opt_timeoutSeconds !== 'undefined' ?
|
||||
opt_timeoutSeconds : u2f.EXTENSION_TIMEOUT_SEC);
|
||||
var req = u2f.formatRegisterRequest_(
|
||||
appId, registeredKeys, registerRequests, timeoutSeconds, reqId);
|
||||
port.postMessage(req);
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Dispatches a message to the extension to find out the supported
|
||||
* JS API version.
|
||||
* If the user is on a mobile phone and is thus using Google Authenticator instead
|
||||
* of the Chrome extension, don't send the request and simply return 0.
|
||||
* @param {function((u2f.Error|u2f.GetJsApiVersionResponse))} callback
|
||||
* @param {number=} opt_timeoutSeconds
|
||||
*/
|
||||
u2f.getApiVersion = function(callback, opt_timeoutSeconds) {
|
||||
u2f.getPortSingleton_(function(port) {
|
||||
// If we are using Android Google Authenticator or iOS client app,
|
||||
// do not fire an intent to ask which JS API version to use.
|
||||
if (port.getPortType) {
|
||||
var apiVersion;
|
||||
switch (port.getPortType()) {
|
||||
case 'WrappedIosPort_':
|
||||
case 'WrappedAuthenticatorPort_':
|
||||
apiVersion = 1.1;
|
||||
break;
|
||||
|
||||
default:
|
||||
apiVersion = 0;
|
||||
break;
|
||||
}
|
||||
callback({ 'js_api_version': apiVersion });
|
||||
return;
|
||||
}
|
||||
var reqId = ++u2f.reqCounter_;
|
||||
u2f.callbackMap_[reqId] = callback;
|
||||
var req = {
|
||||
type: u2f.MessageTypes.U2F_GET_API_VERSION_REQUEST,
|
||||
timeoutSeconds: (typeof opt_timeoutSeconds !== 'undefined' ?
|
||||
opt_timeoutSeconds : u2f.EXTENSION_TIMEOUT_SEC),
|
||||
requestId: reqId
|
||||
};
|
||||
port.postMessage(req);
|
||||
});
|
||||
};
|
||||
@@ -0,0 +1,157 @@
|
||||
/* globals $, urls, updateEnabled */
|
||||
(function () {
|
||||
var origData;
|
||||
|
||||
var setupButtonClickOnRefreshedProperties = function () {
|
||||
$('#formRefreshCAS button').on('click', function (e) {
|
||||
e.preventDefault();
|
||||
|
||||
// Show the refreshModal
|
||||
var myModal = $('#refreshModal').modal({
|
||||
keyboard: false,
|
||||
backdrop: 'static'
|
||||
});
|
||||
|
||||
var primaryButton = myModal.find('.modal-footer button.btn-primary');
|
||||
|
||||
// Disable the primary button
|
||||
primaryButton.prop('disabled', true).text('Refreshing...');
|
||||
|
||||
$.post(e.target.parentNode.action, function (data) {
|
||||
if (data.length !== 0) {
|
||||
$('#refreshModal-label').text('Refreshed Properties');
|
||||
myModal.find('.modal-content .modal-body').html(
|
||||
'<pre>' + data + '</pre>' +
|
||||
'<p>Click "OK" to reload page.</p>'
|
||||
);
|
||||
} else {
|
||||
myModal.find('.modal-header .modal-title').text('Properties Refreshed');
|
||||
myModal.find('.modal-content .modal-body').html(
|
||||
'<p>Click "OK" to reload page.</p>'
|
||||
);
|
||||
}
|
||||
})
|
||||
.done(function () {
|
||||
primaryButton.prop('disabled', false).text('Reload page').on('click', function (e) {
|
||||
e.preventDefault();
|
||||
window.location.reload();
|
||||
});
|
||||
})
|
||||
.fail(function (jqXHR) {
|
||||
$('#refreshModal-label').text('Problem With Refreshing Properties');
|
||||
myModal.find('.modal-content .modal-body').html(
|
||||
'<div class="alert alert-warning"><strong>Status: ' + jqXHR.status + '</strong><p/>Unable to refresh the properties. Please try again.</div>'
|
||||
);
|
||||
primaryButton.prop('disabled', false).text('OK').on('click', function (e) {
|
||||
e.preventDefault();
|
||||
myModal.modal('hide');
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
var createDataTable = function () {
|
||||
$('#viewConfigsTable').DataTable({
|
||||
'autoWidth': false,
|
||||
'initComplete': function (settings, json) {
|
||||
if (!json) {
|
||||
$('#loadingMessage').hide();
|
||||
$('#viewConfigError').show();
|
||||
$('#view-configuration').hide();
|
||||
} else {
|
||||
$('#loadingMessage').hide();
|
||||
$('#viewConfigError').hide();
|
||||
$('#view-configuration').show();
|
||||
}
|
||||
},
|
||||
'drawCallback': function () {
|
||||
var api = this.api();
|
||||
if (api.page.info().pages > 1) {
|
||||
$('#' + $.fn.dataTable.tables()[0].id + '_paginate')[0].style.display = 'block';
|
||||
} else {
|
||||
$('#' + $.fn.dataTable.tables()[0].id + '_paginate')[0].style.display = 'none';
|
||||
}
|
||||
|
||||
if (updateEnabled) {
|
||||
editTable();
|
||||
}
|
||||
},
|
||||
'processing': true,
|
||||
'ajax': {
|
||||
'url': urls.getConfiguration,
|
||||
'dataSrc': function (json) {
|
||||
var returnData = [];
|
||||
for (var item in json) {
|
||||
returnData.push({
|
||||
'key': '<code>' + item + '</code>',
|
||||
'value': '' + json[item] + ''
|
||||
});
|
||||
}
|
||||
return returnData;
|
||||
}
|
||||
},
|
||||
'columns': [
|
||||
{'data': 'key', 'className': 'col-xs-6 key'},
|
||||
{'data': 'value', 'className': 'col-xs-6 value'}
|
||||
],
|
||||
'pageLength': 50
|
||||
});
|
||||
};
|
||||
|
||||
var getRowData = function (row) {
|
||||
var tds = row.find('td');
|
||||
var tmp = {};
|
||||
$.each(tds, function (i) {
|
||||
if (i % 2 === 0) {
|
||||
tmp.key = $(this).text();
|
||||
} else {
|
||||
tmp.value = $(this).text();
|
||||
}
|
||||
});
|
||||
return tmp;
|
||||
};
|
||||
|
||||
var editTable = function () {
|
||||
$('#viewConfigsTable').editableTableWidget({editor: $('<textarea>')});
|
||||
|
||||
$('#viewConfigsTable td').on('focus', function () {
|
||||
origData = getRowData($(this).closest('tr'));
|
||||
});
|
||||
|
||||
$('#viewConfigsTable tr').on('change', function () {
|
||||
var newChanges = getRowData($(this));
|
||||
|
||||
var data = {old: origData, new: newChanges};
|
||||
$.ajax({url: urls.updateConfiguration, data: JSON.stringify(data), type: 'POST', contentType: 'application/json'})
|
||||
.fail(function () {
|
||||
var result = 'Failed to save settings.';
|
||||
$('#alertWrapper').addClass('alert-warning');
|
||||
$('#alertWrapper').removeClass('alert-success');
|
||||
|
||||
$('#alertWrapper').text(result);
|
||||
$('#alertWrapper').show();
|
||||
})
|
||||
.success(function () {
|
||||
var result = 'Saved settings successfully.';
|
||||
$('#alertWrapper').removeClass('alert-warning');
|
||||
$('#alertWrapper').addClass('alert-success');
|
||||
|
||||
$('#resultText').text(result);
|
||||
$('#alertWrapper').show();
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
// initialization *******
|
||||
(function init () {
|
||||
createDataTable();
|
||||
setupButtonClickOnRefreshedProperties();
|
||||
})();
|
||||
|
||||
// Public Methods
|
||||
return {
|
||||
/**
|
||||
* Not used
|
||||
*/
|
||||
};
|
||||
})();
|
||||
@@ -0,0 +1,136 @@
|
||||
$('.ui.search').search({
|
||||
type: 'message',
|
||||
searchDelay: 500,
|
||||
silent: true,
|
||||
apiSettings: {
|
||||
silent: true,
|
||||
cache: false,
|
||||
url: urls.search,
|
||||
onResponse: function (casResp) {
|
||||
var response = {
|
||||
results: {}
|
||||
};
|
||||
|
||||
for (var key in casResp) {
|
||||
if (casResp.hasOwnProperty(key)) {
|
||||
var prop = casResp[key];
|
||||
var group = prop.group;
|
||||
|
||||
if (response.results[group] === undefined) {
|
||||
response.results[group] = {
|
||||
name: group,
|
||||
results: []
|
||||
};
|
||||
}
|
||||
response.results[group].results.push({
|
||||
title: prop.id,
|
||||
description: prop.description,
|
||||
defaultValue: prop.defaultValue,
|
||||
type: prop.type,
|
||||
deprecated: prop.deprecated,
|
||||
requiredProperty: prop.requiredProperty,
|
||||
requiredModule: prop.requiredModule,
|
||||
requiredModuleAutomated: prop.requiredModuleAutomated
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return response;
|
||||
},
|
||||
},
|
||||
minCharacters: 3,
|
||||
templates: {
|
||||
message: function (response, type) {
|
||||
var html = '';
|
||||
$('#accordion').empty();
|
||||
|
||||
if (type === 'empty') {
|
||||
html += '<h3><i class=\'fa fa-search\' /> <strong>No Results</strong></h3>';
|
||||
html += '<div class=\'alert alert-warning\'>';
|
||||
html += '<i class=\'fa fa-exclamation-circle\'/> ';
|
||||
html += 'No search results could be found based on the provided query.';
|
||||
html += '</div>';
|
||||
}
|
||||
|
||||
for (var group in response.results) {
|
||||
var modules = new Set();
|
||||
|
||||
html += '<h2><i class=\'fa fa-users\' /> <strong>Group: </strong>' + group + '</h2>';
|
||||
var props = response.results[group].results;
|
||||
|
||||
html += '<div>';
|
||||
|
||||
for (var i = 0; i < props.length; i++) {
|
||||
html += '<p>';
|
||||
var prop = props[i];
|
||||
html += '<i class=\'fa fa-cogs\'/> ';
|
||||
html += 'Property: <code>' + prop.title + '=' + prop.defaultValue + '</code><br/>';
|
||||
if (prop.deprecated) {
|
||||
html += '<p/><div class=\'alert alert-warning\'>';
|
||||
html += '<i class=\'fa fa-exclamation-circle\'/> ';
|
||||
html += 'This property is deprecated and will be removed in future CAS versions.';
|
||||
html += '</div>';
|
||||
}
|
||||
if (prop.requiredProperty) {
|
||||
html += '<p/><div class=\'alert alert-success\'>';
|
||||
html += '<i class=\'fa fa-check-square\'/> ';
|
||||
html += 'This property is required.';
|
||||
html += '</div>';
|
||||
}
|
||||
|
||||
html += '<i class=\'fab fa-codepen\' /> Type: <code>' + prop.type + '</code><br/>';
|
||||
if (prop.description != null) {
|
||||
html += '<p>' + prop.description + '</p>';
|
||||
}
|
||||
|
||||
if (prop.requiredModule != null) {
|
||||
modules.add(prop.requiredModule);
|
||||
}
|
||||
html += '<hr>';
|
||||
}
|
||||
|
||||
if (modules.size > 0) {
|
||||
html += '<div>';
|
||||
html += '<p><i class=\'fa fa-gear\' /> Required Modules</p>';
|
||||
html += '<ul class=\'nav nav-pills\'>';
|
||||
html += '<li class=\'active\'><a href=\'#1\' data-toggle=\'tab\'>Maven</a></li>';
|
||||
html += '<li><a href=\'#2\' data-toggle=\'tab\'>Gradle</a></li>';
|
||||
html += '</ul>';
|
||||
|
||||
for (let moduleString of modules) {
|
||||
html += '<div class=\'tab-content\'>';
|
||||
|
||||
var moduleArr = moduleString.split('|');
|
||||
var module = moduleArr[0];
|
||||
|
||||
var maven = '<dependency>\n';
|
||||
maven += '\t<groupId>org.apereo.cas</groupId>\n';
|
||||
maven += '\t<artifactId>' + module + '</artifactId>\n';
|
||||
maven += '\t<cas.version>${cas.version}</cas.version>\n';
|
||||
maven += '</dependency>\n';
|
||||
html += '<div class=\'tab-pane active\' id=\'1\'><pre>' + maven + '</pre></div>';
|
||||
|
||||
var gradle = 'compile \'org.apereo.cas:' + module + ':${project.\'cas.version\'}\'\n';
|
||||
html += '<div class=\'tab-pane\' id=\'2\'><pre>' + gradle + '</pre></div>';
|
||||
|
||||
html += '</div>';
|
||||
}
|
||||
|
||||
html += '</div>';
|
||||
}
|
||||
|
||||
html += '</div>';
|
||||
}
|
||||
|
||||
html += '</div>';
|
||||
|
||||
|
||||
$('#accordion').html(html);
|
||||
$('#accordion').accordion({
|
||||
heightStyle: 'content'
|
||||
});
|
||||
$('#accordion').accordion('refresh');
|
||||
return '';
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -0,0 +1,112 @@
|
||||
@import "components/variables";
|
||||
|
||||
// Bootstrap and its default variables
|
||||
@import "../../../node_modules/bootstrap/scss/bootstrap";
|
||||
|
||||
@import "partials/messages";
|
||||
|
||||
@import "components/login";
|
||||
|
||||
@import "components/footer";
|
||||
|
||||
@import "partials/admin-panels";
|
||||
|
||||
@import "components/tooltips";
|
||||
|
||||
@import "components/alerts";
|
||||
|
||||
@import "components/statistics-view";
|
||||
|
||||
@import "components/view-configuration";
|
||||
|
||||
@import "components/dashboard-view";
|
||||
|
||||
|
||||
html {
|
||||
position: relative;
|
||||
min-height: 100%;
|
||||
}
|
||||
|
||||
body {
|
||||
/* Margin bottom by footer height */
|
||||
margin-bottom: 85px;
|
||||
}
|
||||
|
||||
body>.container {
|
||||
padding: 85px 15px 0;
|
||||
}
|
||||
|
||||
a {
|
||||
color: $link-color;
|
||||
}
|
||||
.logo {
|
||||
width: 80px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
header {
|
||||
& > .navbar {
|
||||
background-color: $navbar-background-color;
|
||||
color: color-yiq($navbar-background-color);
|
||||
|
||||
.logo {
|
||||
path.cls-1 {
|
||||
@if lightness($navbar-background-color) > lightness(#aaa) {
|
||||
fill: theme-color("cas-primary");
|
||||
} @else {
|
||||
fill: white;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Cards
|
||||
.card {
|
||||
margin-bottom: 2em;
|
||||
}
|
||||
|
||||
#card-unexpired-tgts {
|
||||
color: #3c763d;
|
||||
background-color: #dff0d8;
|
||||
}
|
||||
#card-unexpired-sts {
|
||||
color: #3c763d;
|
||||
background-color: #dff0d8;
|
||||
}
|
||||
#card-expired-tgts {
|
||||
color: #8a6d3b;
|
||||
background-color: #fcf8e3;
|
||||
}
|
||||
#card-expired-sts {
|
||||
color: #8a6d3b;
|
||||
background-color: #fcf8e3;
|
||||
}
|
||||
#card-uptime {
|
||||
background-color: #d9edf7;
|
||||
|
||||
.card-header {
|
||||
color: #31708f;
|
||||
}
|
||||
}
|
||||
#card-server-info {
|
||||
.card-header {
|
||||
background-color: #d9edf7;
|
||||
color: #31708f;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.huge {
|
||||
font-size: 30pt;
|
||||
font-family: 'Lato', sans-serif;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.semi-huge {
|
||||
font-size: 18pt;
|
||||
font-family: 'Lato', sans-serif;
|
||||
font-weight: 300;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
@import 'https://fonts.googleapis.com/css?family=PT+Mono';
|
||||
|
||||
#authnEvents {
|
||||
.tabsContainer {
|
||||
padding: 0 20px;
|
||||
}
|
||||
.btn .caret {
|
||||
margin-left: 5px;
|
||||
}
|
||||
}
|
||||
.tab-pane {
|
||||
padding: 20px 10px;
|
||||
border: 1px solid #ddd;
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
#container {
|
||||
width:100%;
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
// Bootstrap and its default variables
|
||||
@import "components/variables";
|
||||
|
||||
@import "../../../node_modules/bootstrap/scss/bootstrap";
|
||||
|
||||
@import "mixins/buttons";
|
||||
|
||||
@import "partials/messages";
|
||||
|
||||
@import "components/login";
|
||||
|
||||
@import "components/footer";
|
||||
|
||||
@import "components/buttons";
|
||||
|
||||
html {
|
||||
position: relative;
|
||||
min-height: 100%;
|
||||
}
|
||||
|
||||
body {
|
||||
/* Margin bottom by footer height */
|
||||
margin-bottom: 60px;
|
||||
}
|
||||
|
||||
body>.container {
|
||||
padding: 65px 15px 0;
|
||||
}
|
||||
|
||||
a {
|
||||
color: $link-color;
|
||||
}
|
||||
.logo {
|
||||
height: 40px;
|
||||
width: 80px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
header {
|
||||
& > .navbar {
|
||||
background-color: $navbar-background-color;
|
||||
color: color-yiq($navbar-background-color);
|
||||
|
||||
.logo {
|
||||
path.cls-1 {
|
||||
@if lightness($navbar-background-color) > lightness(#aaa) {
|
||||
fill: theme-color("cas-primary");
|
||||
} @else {
|
||||
fill: white;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Cards
|
||||
.card {
|
||||
margin-bottom: 2em;
|
||||
}
|
||||
|
||||
#cas-resource-list {
|
||||
background-color: $cas-resource-list-background-color;
|
||||
}
|
||||
|
||||
#cookiesDisabled.card {
|
||||
background-color: $cookies-disabled-background-color;
|
||||
color: color-yiq($cookies-disabled-background-color);
|
||||
}
|
||||
|
||||
#staticAuthentication.card {
|
||||
background-color: $default-auth-background-color;
|
||||
color: color-yiq($default-auth-background-color);
|
||||
}
|
||||
|
||||
#serviceui.alert {
|
||||
background-color: $serviceui-alert-background-color;
|
||||
color: color-yiq($serviceui-alert-background-color);
|
||||
}
|
||||
|
||||
#insecureNotice.card {
|
||||
background-color: $insecure-notice-background-color;
|
||||
color: color-yiq($insecure-notice-background-color);
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
.alert-default {
|
||||
color: #333;
|
||||
background-color: #dedede;
|
||||
border-color: #3d3d3d;
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
@import "variables.scss";
|
||||
|
||||
// This sets a default background color for all btn-social implementations. The actual provider style will
|
||||
// override this with their own colors. This is use as a fallback for unknown social types.
|
||||
.btn-social {
|
||||
background-color: slategray;
|
||||
text-transform: capitalize;
|
||||
}
|
||||
|
||||
@import "../vendor/bootstrap-social/bootstrap-social";
|
||||
|
||||
// social-button overrides
|
||||
.btn-social, .btn-social-icon {
|
||||
padding-left: 50px;
|
||||
}
|
||||
|
||||
.btn-social > :first-child, .btn-social-icon > :first-child {
|
||||
line-height: 38px;
|
||||
width: 40px;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add in our own custom social colors.
|
||||
*/
|
||||
.btn-submit {
|
||||
@include btn-social(theme-color("btn-submit"));
|
||||
|
||||
}
|
||||
|
||||
|
||||
.btn-cas { @include btn-social(#153e50) }
|
||||
.btn-saml2 { @include btn-social(#cb2027) }
|
||||
.btn-oidc { @include btn-social(#f7931e) }
|
||||
.btn-google2 { @include btn-social(#DD4B39) }
|
||||
.btn-windows { @include btn-social(#2672EC) }
|
||||
.btn-wordpress { @include btn-social(#eeeeee, #000) }
|
||||
|
||||
// Specific provider overrides
|
||||
a.btn.btn-wordpress { color: #000!important; }
|
||||
|
||||
// Success appears as the bootstrap success theme color
|
||||
.btn-restart { @include btn-social(#28a745) }
|
||||
|
||||
// Success appears as the bootstrap warning theme color
|
||||
.btn-refresh { @include btn-social(#ffc107) }
|
||||
|
||||
// Success appears as the bootstrap danger theme color
|
||||
.btn-shutdown { @include btn-social(#dc3545) }
|
||||
@@ -0,0 +1,530 @@
|
||||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
//-webkit-transition: all 0.2s ease;
|
||||
}
|
||||
html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, abbr,
|
||||
address, cite, code, del, dfn, em, img, ins, kbd, q, samp, small, strong, sub, sup, var,
|
||||
b, i, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot,
|
||||
thead, tr, th, td, article, aside, canvas, details, figcaption, figure, footer, header,
|
||||
hgroup, menu, nav, section, summary, time, mark, audio, video {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
outline: 0;
|
||||
//font-size: 100%;
|
||||
vertical-align: baseline;
|
||||
background: transparent;
|
||||
}
|
||||
body { line-height: 1; font-size: 14px;}
|
||||
nav ul { list-style: none; }
|
||||
blockquote, q { quotes: none; }
|
||||
blockquote:before, blockquote:after, q:before, q:after { content: ''; content: none; }
|
||||
a { margin: 0; padding: 0; font-size: 100%; vertical-align: baseline; background: transparent; }
|
||||
ins { background-color: #ff9; color: #000; text-decoration: none; }
|
||||
mark { background-color: #ff9; color: #000; font-style: italic; font-weight: bold; }
|
||||
del { text-decoration: line-through; }
|
||||
abbr[title], dfn[title] { border-bottom: 1px dotted; cursor: help; }
|
||||
table { border-collapse: collapse; border-spacing: 0; }
|
||||
hr { display: block; height: 1px; border: 0; border-top: 1px solid #cccccc; margin: 1em 0; padding: 0; }
|
||||
input, select { vertical-align: middle; }
|
||||
body { font-family: Verdana, sans-serif; font-size: 11px; line-height: 1.4em; background: #eee; }
|
||||
|
||||
input {
|
||||
border: none;
|
||||
transition: all .5s linear;
|
||||
padding: 10px;
|
||||
border: solid 1px #dcdcdc;
|
||||
transition: box-shadow 0.3s, border 0.3s;
|
||||
}
|
||||
|
||||
input:hover, input:focus {
|
||||
outline: 0;
|
||||
transition: all .5s linear;
|
||||
box-shadow: 0 0 5px 1px #969696;
|
||||
border: solid 1px #707070;
|
||||
}
|
||||
|
||||
#container { width: 960px; margin: 0 auto; }
|
||||
|
||||
|
||||
|
||||
@media screen and (min-width: 960px) {
|
||||
#container { width: 960px; }
|
||||
}
|
||||
|
||||
@media screen and (min-width: 1280px) {
|
||||
#ssosessions-page #container { width: 1280px; }
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 960px) {
|
||||
#container { width: 100%; }
|
||||
#content {
|
||||
-webkit-border-bottom-right-radius: 0px;
|
||||
-webkit-border-bottom-left-radius: 0px;
|
||||
-moz-border-radius-bottomright: 0px;
|
||||
-moz-border-radius-bottomleft: 0px;
|
||||
border-bottom-right-radius: 0px;
|
||||
border-bottom-left-radius: 0px;
|
||||
}
|
||||
}
|
||||
|
||||
body#cas {
|
||||
background: #153e50; /* Old browsers */
|
||||
}
|
||||
|
||||
a:link, a:visited {
|
||||
color: #257bb2;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: #a0b757;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-bottom: 1.4em;
|
||||
}
|
||||
|
||||
header {
|
||||
overflow: hidden;
|
||||
padding: 20px 0;
|
||||
}
|
||||
|
||||
#logo {
|
||||
display: block;
|
||||
background: url(../images/logo.png) no-repeat;
|
||||
text-indent: -999em;
|
||||
float: left;
|
||||
height: 100px;
|
||||
width: 80%;
|
||||
margin-right: 40px;
|
||||
border: 0px;
|
||||
}
|
||||
|
||||
header h1 {
|
||||
float: right;
|
||||
width: 119px;
|
||||
height: 60px;
|
||||
background: url(../images/cas-logo.png) no-repeat;
|
||||
text-indent: -999em;
|
||||
}
|
||||
|
||||
#content {
|
||||
overflow: hidden;
|
||||
background: #fff;
|
||||
padding: 20px;
|
||||
-webkit-border-radius: 10px;
|
||||
-moz-border-radius: 10px;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
#msg {
|
||||
padding: 20px;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
#msg.errors {
|
||||
border: 1px dotted #BB0000;
|
||||
color: #BB0000;
|
||||
padding-left: 100px;
|
||||
background: url(../images/error.png) no-repeat 20px center;
|
||||
}
|
||||
|
||||
#msg.success { border: 1px dotted #390; color: #390; padding-left: 100px; background: url(../images/success.png) no-repeat 20px center; }
|
||||
#msg.info { border: 1px dotted #008; color: #008; padding-left: 100px; background: url(../images/info.png) no-repeat 20px center; }
|
||||
#msg.question { border: 1px dotted #390; color: #390; padding-left: 100px; background: url(../images/question.png) no-repeat 20px center; }
|
||||
#msg.warn { border: 1px dotted #960; color: #960; padding-left: 100px; background: #ffbc8f url(../images/info.png) no-repeat 20px center; }
|
||||
|
||||
.errors {
|
||||
border: 1px dotted #BB0000;
|
||||
color: #BB0000;
|
||||
padding-left: 100px;
|
||||
padding-top:5px;
|
||||
margin-bottom:5px;
|
||||
background: url(../images/error.png) no-repeat 20px center;
|
||||
}
|
||||
|
||||
#serviceui.serviceinfo {
|
||||
border: 1px dotted #0066FF;
|
||||
color: black;
|
||||
padding-left: 10px;
|
||||
padding-top: 5px;
|
||||
}
|
||||
|
||||
#servicedesc {
|
||||
vertical-align:middle;
|
||||
padding-left: 30px;
|
||||
width: 90%;
|
||||
}
|
||||
|
||||
@import "components/login";
|
||||
|
||||
|
||||
@import "components/footer";
|
||||
|
||||
@media only screen and (max-width: 960px) {
|
||||
header { padding: 20px; }
|
||||
#container { width: 100%; }
|
||||
#content {
|
||||
-webkit-border-radius: 0px;
|
||||
-moz-border-radius: 0px;
|
||||
border-radius: 0px;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 855px) {
|
||||
#logo { display: none; }
|
||||
header h1 { font-size: 1em; width: 70px; height: 40px; background-size: 70px 40px; }
|
||||
#login { float: none; width: 100%; }
|
||||
#fm1 .row input[type=text],
|
||||
#fm1 .row input[type=password] { width: 100%; padding: 10px; box-sizing: border-box; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; }
|
||||
#fm1 .row .btn-submit { outline: none; -webkit-appearance: none; -webkit-border-radius: 0; border: 0; background: #70ba61; color: white; font-weight: bold; width: 100%; padding: 10px 20px; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; }
|
||||
#fm1 .row .btn-reset { display: none; }
|
||||
#sidebar { margin-top: 20px; }
|
||||
#sidebar .sidebar-content { padding: 0; }
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* SSO Sessions Styles
|
||||
*/
|
||||
#loadingMessage {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
#cas-sessions, #no-cas-sessions {
|
||||
display: none;
|
||||
}
|
||||
#no-cas-sessions div {
|
||||
margin-top: 2em;
|
||||
}
|
||||
|
||||
.ssoSessions #content {
|
||||
border-radius: 4px;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
#container-stable {
|
||||
margin: 20px 0 20px;
|
||||
}
|
||||
|
||||
.ssoSessions .btn-success {
|
||||
background: #70ba61;
|
||||
border: 0;
|
||||
padding: 10px 20px;
|
||||
font-weight: bold;
|
||||
color: white;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.ssoSessions .sorting_desc, .ssoSessions .sorting_asc {
|
||||
background-color: rgba(239, 239, 239, 0.8);
|
||||
}
|
||||
.ssoSessions #removeAllSessionsButton.btn .badge {
|
||||
color: #000;
|
||||
padding-right: 9px;
|
||||
}
|
||||
|
||||
.ssoSessions .adminPanels {
|
||||
border-bottom: 1px solid #efefef;
|
||||
margin-bottom: 2em;
|
||||
margin-top: 1em;
|
||||
padding-bottom: 1em;
|
||||
}
|
||||
|
||||
.ssoSessions .adminPanels .panel-default>.panel-heading {
|
||||
background-color: #fff;
|
||||
border-bottom: none;
|
||||
}
|
||||
.ssoSessions .adminPanels .panel-default>.panel-heading h3 {
|
||||
font-family: 'Lato', sans-serif;
|
||||
font-weight: 300;
|
||||
font-size: 20pt;
|
||||
}
|
||||
|
||||
.ssoSessions .adminPanels .panel-default > .panel-heading:after {
|
||||
position: absolute;
|
||||
font-family: FontAwesome;
|
||||
top: -5px;
|
||||
right: 30px;
|
||||
font-size: 70pt;
|
||||
color: #153e50;
|
||||
opacity: 0.1;
|
||||
}
|
||||
.adminPanels .users-panel.panel-default > .panel-heading:after {
|
||||
content: "\f0c0";
|
||||
}
|
||||
|
||||
.adminPanels .usage-panel.panel-default > .panel-heading:after {
|
||||
content: "\f201";
|
||||
}
|
||||
|
||||
.adminPanels .tickets-panel.panel-default > .panel-heading:after {
|
||||
content: "\f145";
|
||||
}
|
||||
|
||||
|
||||
.ssoSessions td.details-control {
|
||||
cursor: pointer;
|
||||
font-family: FontAwesome;
|
||||
font-size: 10pt;
|
||||
color: #337ab7;
|
||||
}
|
||||
.ssoSessions td.details-control:after {
|
||||
content: "\f067";
|
||||
/*content: "\002B"; - thinner plus sign */
|
||||
}
|
||||
.ssoSessions tr.shown td.details-control:after {
|
||||
content: "\f068";
|
||||
/*content: "\002D"; - thinner minus sign */
|
||||
}
|
||||
|
||||
.row-detail-wrapper {
|
||||
/*background-color: cornsilk;*/
|
||||
background-color: #d9edf7;
|
||||
}
|
||||
.ssoSessions .row-detail thead {
|
||||
display: none;
|
||||
}
|
||||
.ssoSessions .row-detail {
|
||||
/*font-size: 8pt;*/
|
||||
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
}
|
||||
.ssoSessions .field-label {
|
||||
/*font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;*/
|
||||
/*font-size: 8pt;*/
|
||||
/*font-weight: bold;*/
|
||||
}
|
||||
|
||||
.principal_attributes td:first-child {
|
||||
width: 30%;
|
||||
}
|
||||
table.principal_attributes>tbody>tr>td {
|
||||
border-top-color: #E6E6E6;
|
||||
}
|
||||
|
||||
.adminPanels .panel-body {
|
||||
padding-top: 5px;
|
||||
}
|
||||
.adminPanels .panel-body span {
|
||||
font-family: 'Lato', sans-serif;
|
||||
font-size: 30pt;
|
||||
font-weight: 100;
|
||||
}
|
||||
|
||||
.row-eq-height {
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
#alertBox {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
@import "alerts";
|
||||
|
||||
|
||||
/**
|
||||
SB Admin Styles
|
||||
*/
|
||||
|
||||
.huge {
|
||||
font-size: 30pt;
|
||||
font-family: 'Lato', sans-serif;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.semi-huge {
|
||||
font-size: 18pt;
|
||||
font-family: 'Lato', sans-serif;
|
||||
font-weight: 300;
|
||||
}
|
||||
/**
|
||||
* Statistics View
|
||||
*/
|
||||
|
||||
.statisticsView {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.statisticsView .progress-meter .background {
|
||||
fill: #DFEAFD;
|
||||
}
|
||||
.statisticsView .progress-meter .foreground {
|
||||
fill: #2E7AF9;
|
||||
}
|
||||
.statisticsView .progress-meter text {
|
||||
font-family: 'Lato' sans-serif;
|
||||
font-size: 25pt;
|
||||
font-weight: 300;
|
||||
}
|
||||
.statisticsView .progress-meter .text2 {
|
||||
font-family: 'Georgia' sans-serif;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
.modal {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* Runtime Statistics Gauge styles
|
||||
*/
|
||||
.statisticsView .runtimeStatistics .background {
|
||||
fill: #DFEAFD;
|
||||
}
|
||||
.statisticsView .runtimeStatistics .foreground {
|
||||
fill: #2E7AF9;
|
||||
}
|
||||
.statisticsView .runtimeStatistics text {
|
||||
font-family: 'Lato' sans-serif;
|
||||
font-size: 25pt;
|
||||
font-weight: 300;
|
||||
}
|
||||
.statisticsView .runtimeStatistics .text2 {
|
||||
font-family: 'Georgia' sans-serif;
|
||||
font-size: 10pt;
|
||||
}
|
||||
#uptime-panel {
|
||||
display: none;
|
||||
}
|
||||
#uptime {
|
||||
font-family: 'Lato', sans-serif;
|
||||
font-size: 16pt;
|
||||
}
|
||||
|
||||
.thread-dump-view {
|
||||
height: 600px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
#metricsGauges strong {
|
||||
display: block;
|
||||
}
|
||||
|
||||
#metricsGauges .panel {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#metricsGauges ul {
|
||||
height : auto;
|
||||
overflow : hidden;
|
||||
}
|
||||
|
||||
#metricsGauges li {
|
||||
float : left;
|
||||
width : 80px;
|
||||
height: 80px;
|
||||
margin: 0 0 10px 10px;
|
||||
background : #d8d8d8;
|
||||
|
||||
}
|
||||
#metricsGauges ul li:nth-child(5n + 1) {
|
||||
clear : left;
|
||||
}
|
||||
|
||||
|
||||
.statisticsView .equal, .statisticsView .equal > div[class*='col-'] {
|
||||
display: -webkit-box;
|
||||
display: -moz-box;
|
||||
display: -ms-flexbox;
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
flex:1 1 auto;
|
||||
}
|
||||
|
||||
.statisticsView .section {
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
|
||||
#viewSsoSessions {
|
||||
color: white;
|
||||
}
|
||||
|
||||
.statisticsView .adminPanels.container-fluid {
|
||||
padding-right: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* View Configuration Styles
|
||||
*/
|
||||
#viewConfigError {
|
||||
display: none;
|
||||
}
|
||||
#view-configuration {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* CAS Meter/PM
|
||||
*/
|
||||
meter {
|
||||
/* Reset the default appearance */
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
appearance: none;
|
||||
|
||||
margin: 0 auto 1em;
|
||||
width: 100%;
|
||||
height: .5em;
|
||||
|
||||
/* Applicable only to Firefox */
|
||||
background: none;
|
||||
background-color: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
meter::-webkit-meter-bar {
|
||||
background: none;
|
||||
background-color: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
meter[value="1"]::-webkit-meter-optimum-value {
|
||||
background: red;
|
||||
}
|
||||
|
||||
meter[value="2"]::-webkit-meter-optimum-value {
|
||||
background: yellow;
|
||||
}
|
||||
|
||||
meter[value="3"]::-webkit-meter-optimum-value {
|
||||
background: orange;
|
||||
}
|
||||
|
||||
meter[value="4"]::-webkit-meter-optimum-value {
|
||||
background: green;
|
||||
}
|
||||
|
||||
meter[value="1"]::-moz-meter-bar {
|
||||
background: red;
|
||||
}
|
||||
|
||||
meter[value="2"]::-moz-meter-bar {
|
||||
background: yellow;
|
||||
}
|
||||
|
||||
meter[value="3"]::-moz-meter-bar {
|
||||
background: orange;
|
||||
}
|
||||
|
||||
meter[value="4"]::-moz-meter-bar {
|
||||
background: green;
|
||||
}
|
||||
|
||||
.feedback {
|
||||
color: #9ab;
|
||||
font-size: 90%;
|
||||
padding: 0 .25em;
|
||||
font-family: Courgette, cursive;
|
||||
margin-top: 1em;
|
||||
}
|
||||
|
||||
.pm {
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
|
||||
@import "dashboard-view";
|
||||
@@ -0,0 +1,144 @@
|
||||
@import "variables";
|
||||
@import "mixins";
|
||||
|
||||
$secondary-color: rgb(20, 144, 179);
|
||||
|
||||
.viewDashboard {
|
||||
|
||||
h2 {
|
||||
font-size: 2rem;
|
||||
margin-left: 10px;
|
||||
border-bottom: solid 1px #efefef;
|
||||
padding-bottom: 5px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
i {
|
||||
font-size: 2.3rem;
|
||||
}
|
||||
}
|
||||
|
||||
>div {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
clear: both;
|
||||
|
||||
li {
|
||||
list-style: none;
|
||||
position: relative;
|
||||
}
|
||||
}
|
||||
|
||||
.app-launcher {
|
||||
clear: both;
|
||||
margin-bottom: 2em;
|
||||
|
||||
ul {
|
||||
|
||||
li {
|
||||
margin: 10px;
|
||||
width: 140px;
|
||||
height: 140px;
|
||||
float: left;
|
||||
border: 5px solid #ccc;
|
||||
font-family: 'Lato', sans-serif;
|
||||
font-weight: 400;
|
||||
font-size: 1.15rem;
|
||||
text-align: center;
|
||||
background-color: #efefef;
|
||||
border-radius: 50%;
|
||||
|
||||
transition: box-shadow 0.5s ease;
|
||||
display: table;
|
||||
|
||||
&:hover, &:focus, &:active {
|
||||
box-shadow: 0px 0px 20px rgba($secondary-color, 0.8);
|
||||
border-color: white;
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
display: table-cell;
|
||||
vertical-align: middle;
|
||||
line-height: normal;
|
||||
transition: font-weight .2s ease-out;
|
||||
border-radius: 50%;
|
||||
color: #045183;
|
||||
|
||||
&:hover, &:focus {
|
||||
color: white;
|
||||
background-color: #1490b3;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.server-config {
|
||||
}
|
||||
|
||||
.server-functions {
|
||||
ul li {
|
||||
display: inline-block;
|
||||
margin: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Move this out to a higher level
|
||||
|
||||
.btn {
|
||||
display: inline-block;
|
||||
margin-bottom: 0; // For input.btn
|
||||
font-weight: $btn-font-weight;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
touch-action: manipulation;
|
||||
cursor: pointer;
|
||||
background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
|
||||
border: 1px solid transparent;
|
||||
white-space: nowrap;
|
||||
|
||||
&,
|
||||
&:active,
|
||||
&.active {
|
||||
&:focus,
|
||||
&.focus {
|
||||
@include tab-focus;
|
||||
}
|
||||
}
|
||||
|
||||
&:hover,
|
||||
&:focus,
|
||||
&.focus {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
&:active,
|
||||
&.active {
|
||||
outline: 0;
|
||||
background-image: none;
|
||||
@include box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
|
||||
}
|
||||
|
||||
&.disabled,
|
||||
&[disabled],
|
||||
fieldset[disabled] & {
|
||||
cursor: not-allowed;
|
||||
@include opacity(.65);
|
||||
@include box-shadow(none);
|
||||
}
|
||||
|
||||
// [converter] extracted a& to a.btn
|
||||
}
|
||||
|
||||
a.btn {
|
||||
&.disabled,
|
||||
fieldset[disabled] & {
|
||||
pointer-events: none; // Future-proof disabling of clicks on `<a>` elements
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
footer {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
height: 60px;
|
||||
line-height: 60px;
|
||||
background-color: $footer-background-color;
|
||||
|
||||
a:link, a:visited {
|
||||
color: $footer-link-color;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
@import "variables";
|
||||
|
||||
.login {
|
||||
.card {
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
}
|
||||
|
||||
#list-providers {
|
||||
ul {
|
||||
list-style: none;
|
||||
padding-left: 0;
|
||||
|
||||
li {
|
||||
list-style: none;
|
||||
margin-bottom: 1em;
|
||||
|
||||
a.btn, a.btn:visited {
|
||||
color: $list-providers-link-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#notices {
|
||||
ul.list-group .fa, ul.list-group .far {
|
||||
margin-right: 7px;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
// Mixins
|
||||
// --------------------------------------------------
|
||||
|
||||
// Components
|
||||
@import "../mixins/buttons";
|
||||
@import "../mixins/opacity";
|
||||
@import "../mixins/tab-focus";
|
||||
@import "../mixins/vendor-prefixes";
|
||||
@@ -0,0 +1,117 @@
|
||||
/**
|
||||
* Statistics View
|
||||
*/
|
||||
|
||||
.statisticsView {
|
||||
display: none;
|
||||
|
||||
.progress-meter {
|
||||
.background {
|
||||
fill: #DFEAFD;
|
||||
}
|
||||
.foreground {
|
||||
fill: #2E7AF9;
|
||||
}
|
||||
|
||||
text {
|
||||
font-family: 'Lato', sans-serif;
|
||||
font-size: 25pt;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.text2 {
|
||||
font-family: 'Georgia', sans-serif;
|
||||
font-size: 10pt;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Runtime Statistics Gauge styles
|
||||
*/
|
||||
.runtimeStatistics {
|
||||
|
||||
.background {
|
||||
fill: #DFEAFD;
|
||||
}
|
||||
|
||||
.foreground {
|
||||
fill: #2E7AF9;
|
||||
}
|
||||
|
||||
text {
|
||||
font-family: 'Lato', sans-serif;
|
||||
font-size: 25pt;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.text2 {
|
||||
font-family: 'Georgia', sans-serif;
|
||||
font-size: 10pt;
|
||||
}
|
||||
}
|
||||
|
||||
.equal, .equal > div[class*='col-'] {
|
||||
display: -webkit-box;
|
||||
display: -moz-box;
|
||||
display: -ms-flexbox;
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
flex: 1 1 auto;
|
||||
}
|
||||
|
||||
.section {
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
|
||||
.adminPanels.container-fluid {
|
||||
padding-right: 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// end .statisticsView
|
||||
|
||||
#uptime-panel {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#uptime {
|
||||
font-family: 'Lato', sans-serif;
|
||||
font-size: 16pt;
|
||||
}
|
||||
|
||||
.thread-dump-view {
|
||||
height: 600px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
#metricsGauges {
|
||||
strong {
|
||||
display: block;
|
||||
}
|
||||
.panel {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
ul {
|
||||
height: auto;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
li {
|
||||
float: left;
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
margin: 0 0 10px 10px;
|
||||
background: #d8d8d8;
|
||||
|
||||
&:nth-child(5n + 1) {
|
||||
clear: left;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#viewSsoSessions {
|
||||
color: white;
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
// Todo: look into resetting the transition delay when mouse out
|
||||
|
||||
.casTooltip {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
/* Tooltip text */
|
||||
.casTooltip .tooltiptext {
|
||||
visibility: hidden;
|
||||
width: 250px;
|
||||
background-color: #333;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
border-radius: 6px;
|
||||
padding: 10px;
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
top: 100%;
|
||||
left: 50%;
|
||||
margin-left: -125px;
|
||||
margin-top: 10px;
|
||||
opacity: 0;
|
||||
transition: opacity 1s;
|
||||
transition-delay: 2s;
|
||||
font-size: 1.5rem;
|
||||
font-weight: 300;
|
||||
font-family: Lato;
|
||||
}
|
||||
|
||||
/* Show the tooltip text when you mouse over the tooltip container */
|
||||
.casTooltip:hover .tooltiptext {
|
||||
visibility: visible;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.casTooltip .tooltiptext::after {
|
||||
content: " ";
|
||||
position: absolute;
|
||||
bottom: 100%; /* At the top of the tooltip */
|
||||
left: 50%;
|
||||
margin-left: -5px;
|
||||
border-width: 5px;
|
||||
border-style: solid;
|
||||
border-color: transparent transparent #333 transparent;
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
// Over-ride theme colors here, like primary, danger, etc.
|
||||
$theme-colors: (
|
||||
"cas-primary": #153e50,
|
||||
"cas-secondary": #74C163,
|
||||
"btn-submit": #28a745,
|
||||
"primary": #007bff,
|
||||
"secondary": #6c757d,
|
||||
"success": #28a745,
|
||||
"info": #17a2b8,
|
||||
"warning": #ffc107,
|
||||
"danger": #dc3545,
|
||||
"light": #f8f9fa,
|
||||
"dark": #343a40,
|
||||
);
|
||||
|
||||
$link-color: #257bb2;
|
||||
$link-hover-color: rgb(160, 183, 87);
|
||||
|
||||
$navbar-background-color: theme-color("cas-primary");
|
||||
|
||||
// Footer Colors
|
||||
$footer-text-color: black;
|
||||
$footer-link-color: black;
|
||||
$footer-background-color: #f5f5f5;
|
||||
|
||||
// Login specific Colors
|
||||
$list-providers-link-color: white;
|
||||
|
||||
// Alerts/Notices Styles
|
||||
$cookies-disabled-background-color: theme-color("warning");
|
||||
$default-auth-background-color: theme-color("info");
|
||||
$serviceui-alert-background-color: theme-color("info");
|
||||
$insecure-notice-background-color: theme-color("warning");
|
||||
$cas-resource-list-background-color: theme-color("light");
|
||||
@@ -0,0 +1,17 @@
|
||||
/**
|
||||
* View Configuration Styles
|
||||
*/
|
||||
|
||||
#viewConfigError {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#view-configuration {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.confirmView, .loginMessageView {
|
||||
.btn-row {
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
/**
|
||||
* Consent Review Styles
|
||||
*/
|
||||
|
||||
@media only screen and (max-width: 855px) {
|
||||
#consentDecisions .consent-attributes td, #consentDecisions .consent-attributes th {
|
||||
padding: 4px;
|
||||
}
|
||||
}
|
||||
|
||||
#consent-decisions, #no-consent-decisions {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#no-consent-decisions div {
|
||||
margin-top: 2em;
|
||||
}
|
||||
|
||||
#consentDecisions > tbody > tr:not(.info) {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#consentDecisions .created-date .label {
|
||||
font-size: 85%;
|
||||
}
|
||||
|
||||
#consentDecisions .service-id {
|
||||
word-wrap: break-word;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
#consentDecisions .consent-attributes {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
#consentDecisions tr.info .btn-danger {
|
||||
float: right;
|
||||
padding: .5em;
|
||||
margin: 0 .2em 1em 0;
|
||||
}
|
||||
|
||||
#alertWrapper .btn {
|
||||
margin: 1em 1em 0 0;
|
||||
}
|
||||
|
||||
#logout {
|
||||
float: right;
|
||||
margin: 1em;
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
// Bootstrap and its default variables
|
||||
//@import "../../../node_modules/bootstrap/scss/bootstrap";
|
||||
|
||||
@import 'https://fonts.googleapis.com/css?family=PT+Mono';
|
||||
|
||||
#loggingDashboard {
|
||||
.tab-pane {
|
||||
padding: 20px 10px;
|
||||
border: 1px solid #ddd;
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
.btn .caret {
|
||||
margin-left: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
#loggersTable {
|
||||
td.details-control span {
|
||||
cursor: pointer;
|
||||
font-family: "Font Awesome 5 Free";
|
||||
font-weight: 900;
|
||||
font-size: 10pt;
|
||||
color: #337ab7;
|
||||
}
|
||||
td.details-control span:after {
|
||||
content: "\f067";
|
||||
}
|
||||
tr.shown td.details-control span:after {
|
||||
content: "\f068";
|
||||
}
|
||||
}
|
||||
|
||||
.additive {
|
||||
text-align: center;
|
||||
|
||||
.glyphicon-ok {
|
||||
color: #5cb85c;
|
||||
}
|
||||
|
||||
.glyphicon-remove {
|
||||
color: #d9534f;
|
||||
}
|
||||
}
|
||||
|
||||
#logoutputarea {
|
||||
border: 0.1em solid #ccc;
|
||||
border-radius: 0.5em;
|
||||
padding: 1em; /* space on all directions */
|
||||
font-family: 'PT Mono', monospace;
|
||||
font-size: 1em;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: black;
|
||||
color: #39e600;
|
||||
}
|
||||
|
||||
main.container {
|
||||
max-width: 95%;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
// Single side border-radius
|
||||
|
||||
@mixin border-top-radius($radius) {
|
||||
border-top-right-radius: $radius;
|
||||
border-top-left-radius: $radius;
|
||||
}
|
||||
@mixin border-right-radius($radius) {
|
||||
border-bottom-right-radius: $radius;
|
||||
border-top-right-radius: $radius;
|
||||
}
|
||||
@mixin border-bottom-radius($radius) {
|
||||
border-bottom-right-radius: $radius;
|
||||
border-bottom-left-radius: $radius;
|
||||
}
|
||||
@mixin border-left-radius($radius) {
|
||||
border-bottom-left-radius: $radius;
|
||||
border-top-left-radius: $radius;
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
// Button variants
|
||||
//
|
||||
// Easily pump out default styles, as well as :hover, :focus, :active,
|
||||
// and disabled options for all buttons
|
||||
|
||||
@mixin button-variant($color, $background, $border) {
|
||||
color: $color;
|
||||
background-color: $background;
|
||||
border-color: $border;
|
||||
|
||||
&:focus,
|
||||
&.focus {
|
||||
color: $color;
|
||||
background-color: darken($background, 10%);
|
||||
border-color: darken($border, 25%);
|
||||
}
|
||||
&:hover {
|
||||
color: $color;
|
||||
background-color: darken($background, 10%);
|
||||
border-color: darken($border, 12%);
|
||||
}
|
||||
&:active,
|
||||
&.active,
|
||||
.open > &.dropdown-toggle {
|
||||
color: $color;
|
||||
background-color: darken($background, 10%);
|
||||
border-color: darken($border, 12%);
|
||||
|
||||
&:hover,
|
||||
&:focus,
|
||||
&.focus {
|
||||
color: $color;
|
||||
background-color: darken($background, 17%);
|
||||
border-color: darken($border, 25%);
|
||||
}
|
||||
}
|
||||
&:active,
|
||||
&.active,
|
||||
.open > &.dropdown-toggle {
|
||||
background-image: none;
|
||||
}
|
||||
&.disabled,
|
||||
&[disabled],
|
||||
fieldset[disabled] & {
|
||||
&:hover,
|
||||
&:focus,
|
||||
&.focus {
|
||||
background-color: $background;
|
||||
border-color: $border;
|
||||
}
|
||||
}
|
||||
|
||||
.badge {
|
||||
color: $background;
|
||||
background-color: $color;
|
||||
}
|
||||
}
|
||||
|
||||
// Button sizes
|
||||
@mixin button-size($padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) {
|
||||
padding: $padding-vertical $padding-horizontal;
|
||||
font-size: $font-size;
|
||||
line-height: $line-height;
|
||||
border-radius: $border-radius;
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
// Opacity
|
||||
|
||||
@mixin opacity($opacity) {
|
||||
opacity: $opacity;
|
||||
// IE8 filter
|
||||
$opacity-ie: ($opacity * 100);
|
||||
filter: alpha(opacity=$opacity-ie);
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
// WebKit-style focus
|
||||
|
||||
@mixin tab-focus() {
|
||||
// Default
|
||||
outline: thin dotted;
|
||||
// WebKit
|
||||
outline: 5px auto -webkit-focus-ring-color;
|
||||
outline-offset: -2px;
|
||||
}
|
||||
@@ -0,0 +1,222 @@
|
||||
// Vendor Prefixes
|
||||
//
|
||||
// All vendor mixins are deprecated as of v3.2.0 due to the introduction of
|
||||
// Autoprefixer in our Gruntfile. They have been removed in v4.
|
||||
|
||||
// - Animations
|
||||
// - Backface visibility
|
||||
// - Box shadow
|
||||
// - Box sizing
|
||||
// - Content columns
|
||||
// - Hyphens
|
||||
// - Placeholder text
|
||||
// - Transformations
|
||||
// - Transitions
|
||||
// - User Select
|
||||
|
||||
|
||||
// Animations
|
||||
@mixin animation($animation) {
|
||||
-webkit-animation: $animation;
|
||||
-o-animation: $animation;
|
||||
animation: $animation;
|
||||
}
|
||||
@mixin animation-name($name) {
|
||||
-webkit-animation-name: $name;
|
||||
animation-name: $name;
|
||||
}
|
||||
@mixin animation-duration($duration) {
|
||||
-webkit-animation-duration: $duration;
|
||||
animation-duration: $duration;
|
||||
}
|
||||
@mixin animation-timing-function($timing-function) {
|
||||
-webkit-animation-timing-function: $timing-function;
|
||||
animation-timing-function: $timing-function;
|
||||
}
|
||||
@mixin animation-delay($delay) {
|
||||
-webkit-animation-delay: $delay;
|
||||
animation-delay: $delay;
|
||||
}
|
||||
@mixin animation-iteration-count($iteration-count) {
|
||||
-webkit-animation-iteration-count: $iteration-count;
|
||||
animation-iteration-count: $iteration-count;
|
||||
}
|
||||
@mixin animation-direction($direction) {
|
||||
-webkit-animation-direction: $direction;
|
||||
animation-direction: $direction;
|
||||
}
|
||||
@mixin animation-fill-mode($fill-mode) {
|
||||
-webkit-animation-fill-mode: $fill-mode;
|
||||
animation-fill-mode: $fill-mode;
|
||||
}
|
||||
|
||||
// Backface visibility
|
||||
// Prevent browsers from flickering when using CSS 3D transforms.
|
||||
// Default value is `visible`, but can be changed to `hidden`
|
||||
|
||||
@mixin backface-visibility($visibility) {
|
||||
-webkit-backface-visibility: $visibility;
|
||||
-moz-backface-visibility: $visibility;
|
||||
backface-visibility: $visibility;
|
||||
}
|
||||
|
||||
// Drop shadows
|
||||
//
|
||||
// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's
|
||||
// supported browsers that have box shadow capabilities now support it.
|
||||
|
||||
@mixin box-shadow($shadow...) {
|
||||
-webkit-box-shadow: $shadow; // iOS <4.3 & Android <4.1
|
||||
box-shadow: $shadow;
|
||||
}
|
||||
|
||||
// Box sizing
|
||||
@mixin box-sizing($boxmodel) {
|
||||
-webkit-box-sizing: $boxmodel;
|
||||
-moz-box-sizing: $boxmodel;
|
||||
box-sizing: $boxmodel;
|
||||
}
|
||||
|
||||
// CSS3 Content Columns
|
||||
@mixin content-columns($column-count, $column-gap: $grid-gutter-width) {
|
||||
-webkit-column-count: $column-count;
|
||||
-moz-column-count: $column-count;
|
||||
column-count: $column-count;
|
||||
-webkit-column-gap: $column-gap;
|
||||
-moz-column-gap: $column-gap;
|
||||
column-gap: $column-gap;
|
||||
}
|
||||
|
||||
// Optional hyphenation
|
||||
@mixin hyphens($mode: auto) {
|
||||
word-wrap: break-word;
|
||||
-webkit-hyphens: $mode;
|
||||
-moz-hyphens: $mode;
|
||||
-ms-hyphens: $mode; // IE10+
|
||||
-o-hyphens: $mode;
|
||||
hyphens: $mode;
|
||||
}
|
||||
|
||||
// Placeholder text
|
||||
@mixin placeholder($color: $input-color-placeholder) {
|
||||
// Firefox
|
||||
&::-moz-placeholder {
|
||||
color: $color;
|
||||
opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526
|
||||
}
|
||||
&:-ms-input-placeholder { color: $color; } // Internet Explorer 10+
|
||||
&::-webkit-input-placeholder { color: $color; } // Safari and Chrome
|
||||
}
|
||||
|
||||
// Transformations
|
||||
@mixin scale($ratio...) {
|
||||
-webkit-transform: scale($ratio);
|
||||
-ms-transform: scale($ratio); // IE9 only
|
||||
-o-transform: scale($ratio);
|
||||
transform: scale($ratio);
|
||||
}
|
||||
|
||||
@mixin scaleX($ratio) {
|
||||
-webkit-transform: scaleX($ratio);
|
||||
-ms-transform: scaleX($ratio); // IE9 only
|
||||
-o-transform: scaleX($ratio);
|
||||
transform: scaleX($ratio);
|
||||
}
|
||||
@mixin scaleY($ratio) {
|
||||
-webkit-transform: scaleY($ratio);
|
||||
-ms-transform: scaleY($ratio); // IE9 only
|
||||
-o-transform: scaleY($ratio);
|
||||
transform: scaleY($ratio);
|
||||
}
|
||||
@mixin skew($x, $y) {
|
||||
-webkit-transform: skewX($x) skewY($y);
|
||||
-ms-transform: skewX($x) skewY($y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+
|
||||
-o-transform: skewX($x) skewY($y);
|
||||
transform: skewX($x) skewY($y);
|
||||
}
|
||||
@mixin translate($x, $y) {
|
||||
-webkit-transform: translate($x, $y);
|
||||
-ms-transform: translate($x, $y); // IE9 only
|
||||
-o-transform: translate($x, $y);
|
||||
transform: translate($x, $y);
|
||||
}
|
||||
@mixin translate3d($x, $y, $z) {
|
||||
-webkit-transform: translate3d($x, $y, $z);
|
||||
transform: translate3d($x, $y, $z);
|
||||
}
|
||||
@mixin rotate($degrees) {
|
||||
-webkit-transform: rotate($degrees);
|
||||
-ms-transform: rotate($degrees); // IE9 only
|
||||
-o-transform: rotate($degrees);
|
||||
transform: rotate($degrees);
|
||||
}
|
||||
@mixin rotateX($degrees) {
|
||||
-webkit-transform: rotateX($degrees);
|
||||
-ms-transform: rotateX($degrees); // IE9 only
|
||||
-o-transform: rotateX($degrees);
|
||||
transform: rotateX($degrees);
|
||||
}
|
||||
@mixin rotateY($degrees) {
|
||||
-webkit-transform: rotateY($degrees);
|
||||
-ms-transform: rotateY($degrees); // IE9 only
|
||||
-o-transform: rotateY($degrees);
|
||||
transform: rotateY($degrees);
|
||||
}
|
||||
@mixin perspective($perspective) {
|
||||
-webkit-perspective: $perspective;
|
||||
-moz-perspective: $perspective;
|
||||
perspective: $perspective;
|
||||
}
|
||||
@mixin perspective-origin($perspective) {
|
||||
-webkit-perspective-origin: $perspective;
|
||||
-moz-perspective-origin: $perspective;
|
||||
perspective-origin: $perspective;
|
||||
}
|
||||
@mixin transform-origin($origin) {
|
||||
-webkit-transform-origin: $origin;
|
||||
-moz-transform-origin: $origin;
|
||||
-ms-transform-origin: $origin; // IE9 only
|
||||
transform-origin: $origin;
|
||||
}
|
||||
|
||||
|
||||
// Transitions
|
||||
|
||||
@mixin transition($transition...) {
|
||||
-webkit-transition: $transition;
|
||||
-o-transition: $transition;
|
||||
transition: $transition;
|
||||
}
|
||||
@mixin transition-property($transition-property...) {
|
||||
-webkit-transition-property: $transition-property;
|
||||
transition-property: $transition-property;
|
||||
}
|
||||
@mixin transition-delay($transition-delay) {
|
||||
-webkit-transition-delay: $transition-delay;
|
||||
transition-delay: $transition-delay;
|
||||
}
|
||||
@mixin transition-duration($transition-duration...) {
|
||||
-webkit-transition-duration: $transition-duration;
|
||||
transition-duration: $transition-duration;
|
||||
}
|
||||
@mixin transition-timing-function($timing-function) {
|
||||
-webkit-transition-timing-function: $timing-function;
|
||||
transition-timing-function: $timing-function;
|
||||
}
|
||||
@mixin transition-transform($transition...) {
|
||||
-webkit-transition: -webkit-transform $transition;
|
||||
-moz-transition: -moz-transform $transition;
|
||||
-o-transition: -o-transform $transition;
|
||||
transition: transform $transition;
|
||||
}
|
||||
|
||||
|
||||
// User select
|
||||
// For selecting text on the page
|
||||
|
||||
@mixin user-select($select) {
|
||||
-webkit-user-select: $select;
|
||||
-moz-user-select: $select;
|
||||
-ms-user-select: $select; // IE10+
|
||||
user-select: $select;
|
||||
}
|
||||