Commit 9a14dd385d34a194bd8fd26ccf5922464eae24ce
Merge branch 'master' of github.com:thingsboard/thingsboard into develop/3.0
Showing
2 changed files
with
29 additions
and
11 deletions
... | ... | @@ -100,34 +100,52 @@ security: |
100 | 100 | basic: |
101 | 101 | enabled: "${SECURITY_BASIC_ENABLED:false}" |
102 | 102 | oauth2: |
103 | + # Enable/disable OAuth 2 login functionality | |
104 | + # For details please refer to https://thingsboard.io/docs/user-guide/oauth-2-support/ | |
103 | 105 | enabled: "${SECURITY_OAUTH2_ENABLED:false}" |
106 | + # Redirect URL where access code from external user management system will be processed | |
104 | 107 | loginProcessingUrl: "${SECURITY_OAUTH2_LOGIN_PROCESSING_URL:/login/oauth2/code/}" |
108 | + # List of SSO clients | |
105 | 109 | clients: |
106 | 110 | default: |
107 | - loginButtonLabel: "${SECURITY_OAUTH2_DEFAULT_LOGIN_BUTTON_LABEL:Default}" # Label that going to be show on login screen | |
108 | - loginButtonIcon: "${SECURITY_OAUTH2_DEFAULT_LOGIN_BUTTON_ICON:}" # Icon that going to be show on login screen. Material design icon ID (https://material.angularjs.org/latest/api/directive/mdIcon) | |
111 | + # Label that going to be show on login button - 'Login with {loginButtonLabel}' | |
112 | + loginButtonLabel: "${SECURITY_OAUTH2_DEFAULT_LOGIN_BUTTON_LABEL:Default}" | |
113 | + # Icon that going to be show on login button. Material design icon ID (https://material.angularjs.org/latest/api/directive/mdIcon) | |
114 | + loginButtonIcon: "${SECURITY_OAUTH2_DEFAULT_LOGIN_BUTTON_ICON:}" | |
109 | 115 | clientName: "${SECURITY_OAUTH2_DEFAULT_CLIENT_NAME:ClientName}" |
110 | 116 | clientId: "${SECURITY_OAUTH2_DEFAULT_CLIENT_ID:}" |
111 | 117 | clientSecret: "${SECURITY_OAUTH2_DEFAULT_CLIENT_SECRET:}" |
112 | 118 | accessTokenUri: "${SECURITY_OAUTH2_DEFAULT_ACCESS_TOKEN_URI:}" |
113 | 119 | authorizationUri: "${SECURITY_OAUTH2_DEFAULT_AUTHORIZATION_URI:}" |
114 | 120 | scope: "${SECURITY_OAUTH2_DEFAULT_SCOPE:}" |
115 | - redirectUriTemplate: "${SECURITY_OAUTH2_DEFAULT_REDIRECT_URI_TEMPLATE:http://localhost:8080/login/oauth2/code/}" # Must be in sync with security.oauth2.loginProcessingUrl | |
121 | + # Redirect URL that must be in sync with 'security.oauth2.loginProcessingUrl', but domain name added | |
122 | + redirectUriTemplate: "${SECURITY_OAUTH2_DEFAULT_REDIRECT_URI_TEMPLATE:http://localhost:8080/login/oauth2/code/}" | |
116 | 123 | jwkSetUri: "${SECURITY_OAUTH2_DEFAULT_JWK_SET_URI:}" |
117 | - authorizationGrantType: "${SECURITY_OAUTH2_DEFAULT_AUTHORIZATION_GRANT_TYPE:authorization_code}" # authorization_code, implicit, refresh_token or client_credentials | |
124 | + # 'authorization_code', 'implicit', 'refresh_token' or 'client_credentials' | |
125 | + authorizationGrantType: "${SECURITY_OAUTH2_DEFAULT_AUTHORIZATION_GRANT_TYPE:authorization_code}" | |
118 | 126 | clientAuthenticationMethod: "${SECURITY_OAUTH2_DEFAULT_CLIENT_AUTHENTICATION_METHOD:post}" # basic or post |
119 | 127 | userInfoUri: "${SECURITY_OAUTH2_DEFAULT_USER_INFO_URI:}" |
120 | 128 | userNameAttributeName: "${SECURITY_OAUTH2_DEFAULT_USER_NAME_ATTRIBUTE_NAME:email}" |
121 | 129 | mapperConfig: |
122 | - type: "${SECURITY_OAUTH2_DEFAULT_MAPPER_TYPE:basic}" # basic or custom | |
130 | + # Mapper type of converter from external user into internal - 'basic' or 'custom' | |
131 | + type: "${SECURITY_OAUTH2_DEFAULT_MAPPER_TYPE:basic}" | |
123 | 132 | basic: |
124 | - allowUserCreation: "${SECURITY_OAUTH2_DEFAULT_MAPPER_BASIC_ALLOW_USER_CREATION:true}" # Allows to create user if it not exists | |
125 | - emailAttributeKey: "${SECURITY_OAUTH2_DEFAULT_MAPPER_BASIC_EMAIL_ATTRIBUTE_KEY:email}" # Attribute key to use as email for the user | |
133 | + # Allows to create user if it not exists | |
134 | + allowUserCreation: "${SECURITY_OAUTH2_DEFAULT_MAPPER_BASIC_ALLOW_USER_CREATION:true}" | |
135 | + # Key from attributes of external user object to use as email | |
136 | + emailAttributeKey: "${SECURITY_OAUTH2_DEFAULT_MAPPER_BASIC_EMAIL_ATTRIBUTE_KEY:email}" | |
126 | 137 | firstNameAttributeKey: "${SECURITY_OAUTH2_DEFAULT_MAPPER_BASIC_FIRST_NAME_ATTRIBUTE_KEY:}" |
127 | 138 | lastNameAttributeKey: "${SECURITY_OAUTH2_DEFAULT_MAPPER_BASIC_LAST_NAME_ATTRIBUTE_KEY:}" |
128 | - tenantNameStrategy: "${SECURITY_OAUTH2_DEFAULT_MAPPER_BASIC_TENANT_NAME_STRATEGY:domain}" # domain, email or custom | |
129 | - tenantNamePattern: "${SECURITY_OAUTH2_DEFAULT_MAPPER_BASIC_TENANT_NAME_PATTERN:}" # %{attribute_key} as placeholder for attributes value by key | |
130 | - customerNamePattern: "${SECURITY_OAUTH2_DEFAULT_MAPPER_BASIC_CUSTOMER_NAME_PATTERN:}" # %{attribute_key} as placeholder for attributes value by key | |
139 | + # Strategy for generating Tenant from external user object - 'domain', 'email' or 'custom' | |
140 | + # 'domain' - name of the Tenant will be extracted as domain from the email of the user | |
141 | + # 'email' - name of the Tenant will email of the user | |
142 | + # 'custom' - please configure 'tenantNamePattern' for custom mapping | |
143 | + tenantNameStrategy: "${SECURITY_OAUTH2_DEFAULT_MAPPER_BASIC_TENANT_NAME_STRATEGY:domain}" | |
144 | + # %{attribute_key} as placeholder for attribute value of attributes of external user object | |
145 | + tenantNamePattern: "${SECURITY_OAUTH2_DEFAULT_MAPPER_BASIC_TENANT_NAME_PATTERN:}" | |
146 | + # If this field is not empty, user will be created as a user under defined Customer | |
147 | + # %{attribute_key} as placeholder for attribute value of attributes of external user object | |
148 | + customerNamePattern: "${SECURITY_OAUTH2_DEFAULT_MAPPER_BASIC_CUSTOMER_NAME_PATTERN:}" | |
131 | 149 | custom: |
132 | 150 | url: "${SECURITY_OAUTH2_DEFAULT_MAPPER_CUSTOM_URL:}" |
133 | 151 | username: "${SECURITY_OAUTH2_DEFAULT_MAPPER_CUSTOM_USERNAME:}" | ... | ... |
... | ... | @@ -94,7 +94,7 @@ export default class TbGoogleMap { |
94 | 94 | window[this.initMapFunctionName] = function() { // eslint-disable-line no-undef, angular/window-service |
95 | 95 | lazyLoad.load([ // eslint-disable-line no-undef |
96 | 96 | { type: 'js', path: 'https://unpkg.com/@google/markerwithlabel@1.2.3/src/markerwithlabel.js' }, |
97 | - { type: 'js', path: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/markerclusterer.js' } | |
97 | + { type: 'js', path: 'https://unpkg.com/@google/markerclustererplus@4.0.1/dist/markerclustererplus.min.js' } | |
98 | 98 | ]).then( |
99 | 99 | function success() { |
100 | 100 | gmGlobals.gmApiKeys[tbMap.apiKey].loaded = true; | ... | ... |