mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-05-19 17:14:57 +00:00
commit
2a40ebd32d
6
.gitignore
vendored
6
.gitignore
vendored
@ -3,4 +3,8 @@ node_modules
|
|||||||
workspace.xml
|
workspace.xml
|
||||||
.idea/
|
.idea/
|
||||||
dist/
|
dist/
|
||||||
!systemjs.config.js
|
!systemjs.config.js
|
||||||
|
demo-shell-ng2/app/components/router/
|
||||||
|
ng2-components/ng2-alfresco-userinfo-old/demo/src/app/
|
||||||
|
ng2-components/ng2-alfresco-userinfo-old/src/services/bpm-user.service.spec.ts
|
||||||
|
ng2-components/ng2-alfresco-userinfo-old/src/services/ecm-user.service.spec.ts
|
||||||
|
@ -32,6 +32,7 @@ env:
|
|||||||
- MODULE=ng2-activiti-tasklist
|
- MODULE=ng2-activiti-tasklist
|
||||||
- MODULE=ng2-activiti-processlist
|
- MODULE=ng2-activiti-processlist
|
||||||
- MODULE=ng2-activiti-analytics
|
- MODULE=ng2-activiti-analytics
|
||||||
|
- MODULE=ng2-alfresco-userinfo
|
||||||
|
|
||||||
before_script:
|
before_script:
|
||||||
- if ([ "$MODULE" != "ng2-alfresco-core" ]); then
|
- if ([ "$MODULE" != "ng2-alfresco-core" ]); then
|
||||||
@ -83,3 +84,4 @@ cache:
|
|||||||
- ng2-components/ng2-alfresco-webscript/node_modules
|
- ng2-components/ng2-alfresco-webscript/node_modules
|
||||||
- ng2-components/ng2-alfresco-tag/node_modules
|
- ng2-components/ng2-alfresco-tag/node_modules
|
||||||
- ng2-components/ng2-alfresco-analytics/node_modules
|
- ng2-components/ng2-alfresco-analytics/node_modules
|
||||||
|
- ng2-components/ng2-alfresco-userinfo/node_modules
|
||||||
|
@ -7,3 +7,6 @@
|
|||||||
.mdl-layout-title{
|
.mdl-layout-title{
|
||||||
font-size: 17px;
|
font-size: 17px;
|
||||||
}
|
}
|
||||||
|
.user-profile{
|
||||||
|
margin-right: 3px;
|
||||||
|
}
|
@ -21,6 +21,10 @@
|
|||||||
<a class="mdl-navigation__link" data-automation-id="login" href="" routerLink="/login">Login</a>
|
<a class="mdl-navigation__link" data-automation-id="login" href="" routerLink="/login">Login</a>
|
||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
|
<div class="user-profile" *ngIf="isLoggedIn()">
|
||||||
|
<ng2-alfresco-userinfo></ng2-alfresco-userinfo>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- Right aligned menu below button -->
|
<!-- Right aligned menu below button -->
|
||||||
<button id="demo-menu-lower-right" data-automation-id="right-action-menu"
|
<button id="demo-menu-lower-right" data-automation-id="right-action-menu"
|
||||||
class="mdl-button mdl-js-button mdl-button--icon">
|
class="mdl-button mdl-js-button mdl-button--icon">
|
||||||
|
@ -30,6 +30,7 @@ import { ViewerModule } from 'ng2-alfresco-viewer';
|
|||||||
import { ActivitiFormModule } from 'ng2-activiti-form';
|
import { ActivitiFormModule } from 'ng2-activiti-form';
|
||||||
import { ActivitiTaskListModule } from 'ng2-activiti-tasklist';
|
import { ActivitiTaskListModule } from 'ng2-activiti-tasklist';
|
||||||
import { ActivitiProcessListModule } from 'ng2-activiti-processlist';
|
import { ActivitiProcessListModule } from 'ng2-activiti-processlist';
|
||||||
|
import { UserInfoComponentModule } from 'ng2-alfresco-userinfo';
|
||||||
|
|
||||||
import { AppComponent } from './app.component';
|
import { AppComponent } from './app.component';
|
||||||
import { routing } from './app.routes';
|
import { routing } from './app.routes';
|
||||||
@ -63,7 +64,8 @@ import {
|
|||||||
ViewerModule.forRoot(),
|
ViewerModule.forRoot(),
|
||||||
ActivitiFormModule.forRoot(),
|
ActivitiFormModule.forRoot(),
|
||||||
ActivitiTaskListModule.forRoot(),
|
ActivitiTaskListModule.forRoot(),
|
||||||
ActivitiProcessListModule.forRoot()
|
ActivitiProcessListModule.forRoot(),
|
||||||
|
UserInfoComponentModule.forRoot()
|
||||||
],
|
],
|
||||||
declarations: [
|
declarations: [
|
||||||
AppComponent,
|
AppComponent,
|
||||||
|
@ -36,7 +36,8 @@
|
|||||||
'ng2-alfresco-tag': 'npm:ng2-alfresco-tag/dist',
|
'ng2-alfresco-tag': 'npm:ng2-alfresco-tag/dist',
|
||||||
'ng2-activiti-tasklist': 'npm:ng2-activiti-tasklist/dist',
|
'ng2-activiti-tasklist': 'npm:ng2-activiti-tasklist/dist',
|
||||||
'alfresco-js-api': 'npm:alfresco-js-api/dist',
|
'alfresco-js-api': 'npm:alfresco-js-api/dist',
|
||||||
'ng2-activiti-processlist': 'npm:ng2-activiti-processlist/dist'
|
'ng2-activiti-processlist': 'npm:ng2-activiti-processlist/dist',
|
||||||
|
'ng2-alfresco-userinfo': 'npm:ng2-alfresco-userinfo/dist'
|
||||||
},
|
},
|
||||||
// packages tells the System loader how to load when no filename and/or no extension
|
// packages tells the System loader how to load when no filename and/or no extension
|
||||||
packages: {
|
packages: {
|
||||||
@ -61,7 +62,8 @@
|
|||||||
'ng2-activiti-tasklist': { main: './index.js', defaultExtension: 'js'},
|
'ng2-activiti-tasklist': { main: './index.js', defaultExtension: 'js'},
|
||||||
'ng2-alfresco-webscript': { main: './index.js', defaultExtension: 'js'},
|
'ng2-alfresco-webscript': { main: './index.js', defaultExtension: 'js'},
|
||||||
'ng2-alfresco-tag': { main: './index.js', defaultExtension: 'js'},
|
'ng2-alfresco-tag': { main: './index.js', defaultExtension: 'js'},
|
||||||
'alfresco-js-api': { main: './alfresco-js-api.js', defaultExtension: 'js'}
|
'alfresco-js-api': { main: './alfresco-js-api.js', defaultExtension: 'js'},
|
||||||
|
'ng2-alfresco-userinfo': { main: './index.js', defaultExtension: 'js'}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
})(this);
|
})(this);
|
||||||
|
@ -74,6 +74,7 @@ describe('AlfrescoAuthentication', () => {
|
|||||||
authService.login('fake-username', 'fake-password').subscribe(() => {
|
authService.login('fake-username', 'fake-password').subscribe(() => {
|
||||||
expect(authService.isLoggedIn()).toBe(true);
|
expect(authService.isLoggedIn()).toBe(true);
|
||||||
expect(authService.getTicketEcm()).toEqual('fake-post-ticket');
|
expect(authService.getTicketEcm()).toEqual('fake-post-ticket');
|
||||||
|
expect(authService.isEcmLoggedIn()).toBe(true);
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -106,6 +107,7 @@ describe('AlfrescoAuthentication', () => {
|
|||||||
(err: any) => {
|
(err: any) => {
|
||||||
expect(authService.isLoggedIn()).toBe(false);
|
expect(authService.isLoggedIn()).toBe(false);
|
||||||
expect(authService.getTicketEcm()).toBe(null);
|
expect(authService.getTicketEcm()).toBe(null);
|
||||||
|
expect(authService.isEcmLoggedIn()).toBe(false);
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -141,6 +143,7 @@ describe('AlfrescoAuthentication', () => {
|
|||||||
authService.logout().subscribe(() => {
|
authService.logout().subscribe(() => {
|
||||||
expect(authService.isLoggedIn()).toBe(false);
|
expect(authService.isLoggedIn()).toBe(false);
|
||||||
expect(authService.getTicketEcm()).toBe(null);
|
expect(authService.getTicketEcm()).toBe(null);
|
||||||
|
expect(authService.isEcmLoggedIn()).toBe(false);
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -158,6 +161,7 @@ describe('AlfrescoAuthentication', () => {
|
|||||||
|
|
||||||
it('should return false if the user is not logged in', () => {
|
it('should return false if the user is not logged in', () => {
|
||||||
expect(authService.isLoggedIn()).toBe(false);
|
expect(authService.isLoggedIn()).toBe(false);
|
||||||
|
expect(authService.isEcmLoggedIn()).toBe(false);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -171,6 +175,7 @@ describe('AlfrescoAuthentication', () => {
|
|||||||
authService.login('fake-username', 'fake-password').subscribe(() => {
|
authService.login('fake-username', 'fake-password').subscribe(() => {
|
||||||
expect(authService.isLoggedIn()).toBe(true);
|
expect(authService.isLoggedIn()).toBe(true);
|
||||||
expect(authService.getTicketBpm()).toEqual('Basic ZmFrZS11c2VybmFtZTpmYWtlLXBhc3N3b3Jk');
|
expect(authService.getTicketBpm()).toEqual('Basic ZmFrZS11c2VybmFtZTpmYWtlLXBhc3N3b3Jk');
|
||||||
|
expect(authService.isBpmLoggedIn()).toBe(true);
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -201,6 +206,7 @@ describe('AlfrescoAuthentication', () => {
|
|||||||
(err: any) => {
|
(err: any) => {
|
||||||
expect(authService.isLoggedIn()).toBe(false);
|
expect(authService.isLoggedIn()).toBe(false);
|
||||||
expect(authService.getTicketBpm()).toBe(null);
|
expect(authService.getTicketBpm()).toBe(null);
|
||||||
|
expect(authService.isBpmLoggedIn()).toBe(false);
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -214,6 +220,7 @@ describe('AlfrescoAuthentication', () => {
|
|||||||
authService.logout().subscribe(() => {
|
authService.logout().subscribe(() => {
|
||||||
expect(authService.isLoggedIn()).toBe(false);
|
expect(authService.isLoggedIn()).toBe(false);
|
||||||
expect(authService.getTicketBpm()).toBe(null);
|
expect(authService.getTicketBpm()).toBe(null);
|
||||||
|
expect(authService.isBpmLoggedIn()).toBe(false);
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -280,6 +287,8 @@ describe('AlfrescoAuthentication', () => {
|
|||||||
expect(authService.isLoggedIn()).toBe(true);
|
expect(authService.isLoggedIn()).toBe(true);
|
||||||
expect(authService.getTicketEcm()).toEqual('fake-post-ticket');
|
expect(authService.getTicketEcm()).toEqual('fake-post-ticket');
|
||||||
expect(authService.getTicketBpm()).toEqual('Basic ZmFrZS11c2VybmFtZTpmYWtlLXBhc3N3b3Jk');
|
expect(authService.getTicketBpm()).toEqual('Basic ZmFrZS11c2VybmFtZTpmYWtlLXBhc3N3b3Jk');
|
||||||
|
expect(authService.isBpmLoggedIn()).toBe(true);
|
||||||
|
expect(authService.isEcmLoggedIn()).toBe(true);
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -302,6 +311,7 @@ describe('AlfrescoAuthentication', () => {
|
|||||||
expect(authService.isLoggedIn()).toBe(false);
|
expect(authService.isLoggedIn()).toBe(false);
|
||||||
expect(authService.getTicketEcm()).toBe(null);
|
expect(authService.getTicketEcm()).toBe(null);
|
||||||
expect(authService.getTicketBpm()).toBe(null);
|
expect(authService.getTicketBpm()).toBe(null);
|
||||||
|
expect(authService.isEcmLoggedIn()).toBe(false);
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -322,6 +332,7 @@ describe('AlfrescoAuthentication', () => {
|
|||||||
expect(authService.isLoggedIn()).toBe(false);
|
expect(authService.isLoggedIn()).toBe(false);
|
||||||
expect(authService.getTicketEcm()).toBe(null);
|
expect(authService.getTicketEcm()).toBe(null);
|
||||||
expect(authService.getTicketBpm()).toBe(null);
|
expect(authService.getTicketBpm()).toBe(null);
|
||||||
|
expect(authService.isBpmLoggedIn()).toBe(false);
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -344,6 +355,8 @@ describe('AlfrescoAuthentication', () => {
|
|||||||
expect(authService.isLoggedIn()).toBe(false);
|
expect(authService.isLoggedIn()).toBe(false);
|
||||||
expect(authService.getTicketEcm()).toBe(null);
|
expect(authService.getTicketEcm()).toBe(null);
|
||||||
expect(authService.getTicketBpm()).toBe(null);
|
expect(authService.getTicketBpm()).toBe(null);
|
||||||
|
expect(authService.isBpmLoggedIn()).toBe(false);
|
||||||
|
expect(authService.isEcmLoggedIn()).toBe(false);
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -82,6 +82,7 @@ export class AlfrescoAuthenticationService {
|
|||||||
* @returns {Observable<R>|Observable<T>}
|
* @returns {Observable<R>|Observable<T>}
|
||||||
*/
|
*/
|
||||||
login(username: string, password: string): Observable<{ type: string, ticket: any }> {
|
login(username: string, password: string): Observable<{ type: string, ticket: any }> {
|
||||||
|
this.removeTicket();
|
||||||
return Observable.fromPromise(this.callApiLogin(username, password))
|
return Observable.fromPromise(this.callApiLogin(username, password))
|
||||||
.map((response: any) => {
|
.map((response: any) => {
|
||||||
this.saveTickets();
|
this.saveTickets();
|
||||||
@ -191,6 +192,20 @@ export class AlfrescoAuthenticationService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The method return true if user is logged in on ecm provider
|
||||||
|
*/
|
||||||
|
public isEcmLoggedIn() {
|
||||||
|
return this.alfrescoApi.ecmAuth && !!this.alfrescoApi.ecmAuth.isLoggedIn();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The method return true if user is logged in on bpm provider
|
||||||
|
*/
|
||||||
|
public isBpmLoggedIn() {
|
||||||
|
return this.alfrescoApi.bpmAuth && !!this.alfrescoApi.bpmAuth.isLoggedIn();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The method write the error in the console browser
|
* The method write the error in the console browser
|
||||||
* @param error
|
* @param error
|
||||||
|
@ -0,0 +1,16 @@
|
|||||||
|
/*!
|
||||||
|
* @license
|
||||||
|
* Copyright 2016 Alfresco Software, Ltd.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
8
ng2-components/ng2-alfresco-search/demo/assets/material.orange-blue.min.css
vendored
Normal file
8
ng2-components/ng2-alfresco-search/demo/assets/material.orange-blue.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
@ -1,4 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
|
23
ng2-components/ng2-alfresco-userinfo/.editorconfig
Normal file
23
ng2-components/ng2-alfresco-userinfo/.editorconfig
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# http://editorconfig.org
|
||||||
|
|
||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
charset = utf-8
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 4
|
||||||
|
end_of_line = lf
|
||||||
|
insert_final_newline = true
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
|
||||||
|
[package.json]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 2
|
||||||
|
|
||||||
|
[karma.conf.js]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 2
|
||||||
|
|
||||||
|
[*.md]
|
||||||
|
insert_final_newline = false
|
||||||
|
trim_trailing_whitespace = false
|
13
ng2-components/ng2-alfresco-userinfo/.gitignore
vendored
Normal file
13
ng2-components/ng2-alfresco-userinfo/.gitignore
vendored
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
npm-debug.log
|
||||||
|
node_modules
|
||||||
|
jspm_packages
|
||||||
|
.idea
|
||||||
|
typings
|
||||||
|
coverage
|
||||||
|
src/**/*.js
|
||||||
|
src/**/*.js.map
|
||||||
|
src/**/*.d.ts
|
||||||
|
demo/**/*.js
|
||||||
|
demo/**/*.js.map
|
||||||
|
demo/**/*.d.ts
|
||||||
|
!systemjs.config.js
|
13
ng2-components/ng2-alfresco-userinfo/LICENSE
Normal file
13
ng2-components/ng2-alfresco-userinfo/LICENSE
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
Copyright 2016 Alfresco <alfresco@alfresco.com>
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
73
ng2-components/ng2-alfresco-userinfo/README.md
Normal file
73
ng2-components/ng2-alfresco-userinfo/README.md
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
# Alfresco User Info Component for Angular 2
|
||||||
|
This component will show the user information for ECM and BPM
|
||||||
|
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
Before you start using this development framework, make sure you have installed all required software and done all the
|
||||||
|
necessary configuration, see this [page](https://github.com/Alfresco/alfresco-ng2-components/blob/master/PREREQUISITES.md).
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm install ng2-alfresco-userinfo --save
|
||||||
|
```
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
Add the following dependency to your index.html:
|
||||||
|
```html
|
||||||
|
<script src="node_modules/alfresco-js-api/dist/alfresco-js-api.js"></script>
|
||||||
|
```
|
||||||
|
|
||||||
|
You must separately install the following libraries for your application:
|
||||||
|
|
||||||
|
- [ng2-translate](https://github.com/ocombe/ng2-translate)
|
||||||
|
- [ng2-alfresco-core](https://www.npmjs.com/package/ng2-alfresco-core)
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm install --save ng2-translate ng2-alfresco-core
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Material Design Lite
|
||||||
|
|
||||||
|
The style of this component is based on [material design](https://getmdl.io/), so if you want to visualize it correctly you have to add the material
|
||||||
|
design dependency to your project:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm install --save material-design-icons material-design-lite
|
||||||
|
```
|
||||||
|
|
||||||
|
Also make sure you include these dependencies in your `index.html` file:
|
||||||
|
|
||||||
|
```html
|
||||||
|
<!-- Google Material Design Lite -->
|
||||||
|
<link rel="stylesheet" href="node_modules/material-design-lite/material.min.css">
|
||||||
|
<script src="node_modules/material-design-lite/material.min.js"></script>
|
||||||
|
<link rel="stylesheet" href="node_modules/material-design-icons/iconfont/material-icons.css">
|
||||||
|
```
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
```html
|
||||||
|
<ng2-alfresco-userinfo></ng2-alfresco-userinfo>
|
||||||
|
```
|
||||||
|
This will show a round icon with user and on click some user information are showed.
|
||||||
|
If user is logged in with ECM and BPM the ECM image will be showed.
|
||||||
|
|
||||||
|
## NPM scripts
|
||||||
|
|
||||||
|
| Command | Description |
|
||||||
|
| --- | --- |
|
||||||
|
| npm run build | Build component |
|
||||||
|
| npm run build:w | Build component and keep watching the changes |
|
||||||
|
| npm run test | Run unit tests in the console |
|
||||||
|
| npm run test-browser | Run unit tests in the browser
|
||||||
|
| npm run coverage | Run unit tests and display code coverage report |
|
||||||
|
|
||||||
|
## History
|
||||||
|
|
||||||
|
For detailed changelog, check [Releases](https://github.com/alfresco/ng2-alfresco-userinfo/releases).
|
||||||
|
|
||||||
|
## Contributors
|
||||||
|
|
||||||
|
[Contributors](https://github.com/alfresco/ng2-alfresco-userinfo/graphs/contributors)
|
@ -0,0 +1,16 @@
|
|||||||
|
/*!
|
||||||
|
* @license
|
||||||
|
* Copyright 2016 Alfresco Software, Ltd.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
10
ng2-components/ng2-alfresco-userinfo/demo/.editorconfig
Normal file
10
ng2-components/ng2-alfresco-userinfo/demo/.editorconfig
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
|
||||||
|
root = true
|
||||||
|
|
||||||
|
[{src,scripts}/**.{ts,json,js}]
|
||||||
|
end_of_line = crlf
|
||||||
|
charset = utf-8
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
insert_final_newline = true
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 4
|
6
ng2-components/ng2-alfresco-userinfo/demo/.gitignore
vendored
Normal file
6
ng2-components/ng2-alfresco-userinfo/demo/.gitignore
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
node_modules
|
||||||
|
.idea
|
||||||
|
coverage
|
||||||
|
dist
|
||||||
|
typings
|
||||||
|
!systemjs.config.js
|
3
ng2-components/ng2-alfresco-userinfo/demo/.npmignore
Normal file
3
ng2-components/ng2-alfresco-userinfo/demo/.npmignore
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
node_modules
|
||||||
|
dist
|
||||||
|
typings
|
13
ng2-components/ng2-alfresco-userinfo/demo/README.md
Normal file
13
ng2-components/ng2-alfresco-userinfo/demo/README.md
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
# User info demo
|
||||||
|
|
||||||
|
Install:
|
||||||
|
|
||||||
|
```
|
||||||
|
npm install
|
||||||
|
```
|
||||||
|
|
||||||
|
Run the project:
|
||||||
|
|
||||||
|
```
|
||||||
|
npm start
|
||||||
|
```
|
34
ng2-components/ng2-alfresco-userinfo/demo/index.html
Normal file
34
ng2-components/ng2-alfresco-userinfo/demo/index.html
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Angular 2 UserInfo - Demo</title>
|
||||||
|
<base href="./">
|
||||||
|
|
||||||
|
<!-- Google Material Design Lite -->
|
||||||
|
<link rel="stylesheet" href="node_modules/material-design-lite/material.min.css">
|
||||||
|
<script src="node_modules/material-design-lite/material.min.js"></script>
|
||||||
|
<link rel="stylesheet" href="node_modules/material-design-icons/iconfont/material-icons.css">
|
||||||
|
<link rel="stylesheet" href="./assets/material.orange-blue.min.css">
|
||||||
|
|
||||||
|
<!-- 1. Load libraries -->
|
||||||
|
<!-- 1. Load libraries -->
|
||||||
|
<!-- Polyfill(s) for older browsers -->
|
||||||
|
<script src="node_modules/core-js/client/shim.min.js"></script>
|
||||||
|
<script src="node_modules/zone.js/dist/zone.js"></script>
|
||||||
|
<script src="node_modules/reflect-metadata/Reflect.js"></script>
|
||||||
|
<script src="node_modules/systemjs/dist/system.src.js"></script>
|
||||||
|
|
||||||
|
<script src="node_modules/alfresco-js-api/dist/alfresco-js-api.js"></script>
|
||||||
|
|
||||||
|
<script src="systemjs.config.js"></script>
|
||||||
|
<script>
|
||||||
|
System.import('app').catch(function(err){ console.error(err); });
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<alfresco-userinfo-demo></alfresco-userinfo-demo>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
77
ng2-components/ng2-alfresco-userinfo/demo/package.json
Normal file
77
ng2-components/ng2-alfresco-userinfo/demo/package.json
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
{
|
||||||
|
"name": "ng2-alfresco-userinfo-demo",
|
||||||
|
"description": "Alfresco Angular2 User Info Component - Demo",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"author": "Alfresco Software, Ltd.",
|
||||||
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"clean": "rimraf dist node_modules",
|
||||||
|
"postinstall": "npm run build",
|
||||||
|
"start": "npm run build && concurrently \"npm run tsc:w\" \"npm run server\" ",
|
||||||
|
"server": "wsrv -o -s -l",
|
||||||
|
"build": "npm run tslint && rimraf dist && npm run tsc",
|
||||||
|
"tsc": "tsc",
|
||||||
|
"tsc:w": "tsc -w",
|
||||||
|
"tslint": "tslint -c tslint.json *.ts && tslint -c tslint.json src/{,**/}**.ts"
|
||||||
|
},
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"dependencies": {
|
||||||
|
"@angular/common": "2.0.0",
|
||||||
|
"@angular/compiler": "2.0.0",
|
||||||
|
"@angular/core": "2.0.0",
|
||||||
|
"@angular/forms": "2.0.0",
|
||||||
|
"@angular/http": "2.0.0",
|
||||||
|
"@angular/platform-browser": "2.0.0",
|
||||||
|
"@angular/platform-browser-dynamic": "2.0.0",
|
||||||
|
"@angular/router": "3.0.0",
|
||||||
|
"@angular/upgrade": "2.0.0",
|
||||||
|
"core-js": "^2.4.1",
|
||||||
|
"reflect-metadata": "^0.1.3",
|
||||||
|
"rxjs": "5.0.0-beta.12",
|
||||||
|
"systemjs": "0.19.27",
|
||||||
|
"zone.js": "^0.6.23",
|
||||||
|
|
||||||
|
"material-design-icons": "2.2.3",
|
||||||
|
"material-design-lite": "1.2.1",
|
||||||
|
"ng2-translate": "2.5.0",
|
||||||
|
|
||||||
|
"alfresco-js-api": "^0.3.0",
|
||||||
|
"ng2-alfresco-core": "^0.3.0",
|
||||||
|
"ng2-alfresco-userinfo": "0.3.2"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/core-js": "^0.9.32",
|
||||||
|
"@types/jasmine": "^2.2.33",
|
||||||
|
"concurrently": "^2.2.0",
|
||||||
|
"rimraf": "2.5.2",
|
||||||
|
"tslint": "3.8.1",
|
||||||
|
"license-check": "1.1.5",
|
||||||
|
"typescript": "^2.0.2",
|
||||||
|
"wsrv": "^0.1.5"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"angular2",
|
||||||
|
"typescript"
|
||||||
|
],
|
||||||
|
"license-check-config": {
|
||||||
|
"src": [
|
||||||
|
"**/*.js",
|
||||||
|
"**/*.ts",
|
||||||
|
"!/**/coverage/**/*",
|
||||||
|
"!/**/demo/**/*",
|
||||||
|
"!/**/node_modules/**/*",
|
||||||
|
"!/**/typings/**/*",
|
||||||
|
"!*.js"
|
||||||
|
],
|
||||||
|
"contributors": [
|
||||||
|
{
|
||||||
|
"name": "Vito Albano",
|
||||||
|
"email": "vito.albano@alfresco.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"path": "assets/license_header.txt",
|
||||||
|
"blocking": true,
|
||||||
|
"logInfo": false,
|
||||||
|
"logError": true
|
||||||
|
}
|
||||||
|
}
|
145
ng2-components/ng2-alfresco-userinfo/demo/src/main.ts
Normal file
145
ng2-components/ng2-alfresco-userinfo/demo/src/main.ts
Normal file
@ -0,0 +1,145 @@
|
|||||||
|
/*!
|
||||||
|
* @license
|
||||||
|
* Copyright 2016 Alfresco Software, Ltd.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { NgModule, Component, OnInit } from '@angular/core';
|
||||||
|
import { BrowserModule } from '@angular/platform-browser';
|
||||||
|
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
|
||||||
|
import { UserInfoComponentModule } from 'ng2-alfresco-userinfo';
|
||||||
|
import { CoreModule } from 'ng2-alfresco-core';
|
||||||
|
|
||||||
|
import { AlfrescoAuthenticationService, AlfrescoSettingsService } from 'ng2-alfresco-core';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'alfresco-userinfo-demo',
|
||||||
|
template: `<h4> START DEMO USERINFO </h4>
|
||||||
|
<div style="border-radius: 8px; position: absolute; background-color:papayawhip; color: cadetblue; left: 320px; top: 30px; z-index: 1;">
|
||||||
|
<p style="width:120px;margin: 20px;">
|
||||||
|
<label for="switch1" class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||||
|
<input type="checkbox" id="switch1" class="mdl-switch__input"
|
||||||
|
(click)="toggleECM(ecm.checked)" #ecm>
|
||||||
|
<span class="mdl-switch__label">ECM</span>
|
||||||
|
</label>
|
||||||
|
</p>
|
||||||
|
<p style="width:120px;margin: 20px;">
|
||||||
|
<label for="switch2" class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||||
|
<input type="checkbox" id="switch2" class="mdl-switch__input" checked
|
||||||
|
(click)="toggleBPM(bpm.checked)" #bpm>
|
||||||
|
<span class="mdl-switch__label">BPM</span>
|
||||||
|
</label>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div *ngIf="isLoggedIn()">
|
||||||
|
<ng2-alfresco-userinfo></ng2-alfresco-userinfo>
|
||||||
|
</div>
|
||||||
|
<p></p>
|
||||||
|
<div>
|
||||||
|
<p>
|
||||||
|
<span>Username</span>
|
||||||
|
<input id="user" type="text" [(ngModel)]="userToLogin" value="admin"/>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<span>Password</span>
|
||||||
|
<input id="passw" type="password" [(ngModel)]="password" value="admin"/>
|
||||||
|
</p>
|
||||||
|
<button type="submit" (click)="attemptLogin()"> Login !</button>
|
||||||
|
</div>
|
||||||
|
<span>{{loginErrorMessage}}</span>
|
||||||
|
<button (click)="logout()">Logout</button>`,
|
||||||
|
styles: [
|
||||||
|
':host > .container {padding: 10px}',
|
||||||
|
'.p-10 { padding: 10px; }'
|
||||||
|
]
|
||||||
|
})
|
||||||
|
class UserInfoDemo implements OnInit {
|
||||||
|
|
||||||
|
public userToLogin: string = 'admin';
|
||||||
|
public password: string = 'admin';
|
||||||
|
public loginErrorMessage: string;
|
||||||
|
public providers: string = 'BPM';
|
||||||
|
private authenticated: boolean;
|
||||||
|
private token: any;
|
||||||
|
|
||||||
|
constructor(private authService: AlfrescoAuthenticationService,
|
||||||
|
private settingsService: AlfrescoSettingsService) {
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit() {
|
||||||
|
this.settingsService.setProviders(this.providers);
|
||||||
|
}
|
||||||
|
|
||||||
|
attemptLogin() {
|
||||||
|
this.loginErrorMessage = '';
|
||||||
|
this.login(this.userToLogin, this.password);
|
||||||
|
}
|
||||||
|
|
||||||
|
logout() {
|
||||||
|
this.authService.logout();
|
||||||
|
}
|
||||||
|
|
||||||
|
login(user, password) {
|
||||||
|
this.settingsService.setProviders(this.providers);
|
||||||
|
this.authService.login(user, password).subscribe(
|
||||||
|
token => {
|
||||||
|
console.log(token);
|
||||||
|
this.token = token;
|
||||||
|
this.authenticated = true;
|
||||||
|
},
|
||||||
|
error => {
|
||||||
|
console.log(error);
|
||||||
|
this.authenticated = false;
|
||||||
|
this.loginErrorMessage = error;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
isLoggedIn(): boolean {
|
||||||
|
return this.authService.isLoggedIn();
|
||||||
|
}
|
||||||
|
|
||||||
|
toggleECM(checked) {
|
||||||
|
if (checked && this.providers === 'BPM') {
|
||||||
|
this.providers = 'ALL';
|
||||||
|
} else if (checked) {
|
||||||
|
this.providers = 'ECM';
|
||||||
|
} else {
|
||||||
|
this.providers = undefined;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
toggleBPM(checked) {
|
||||||
|
if (checked && this.providers === 'ECM') {
|
||||||
|
this.providers = 'ALL';
|
||||||
|
} else if (checked) {
|
||||||
|
this.providers = 'BPM';
|
||||||
|
} else {
|
||||||
|
this.providers = undefined;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
imports: [
|
||||||
|
BrowserModule,
|
||||||
|
CoreModule.forRoot(),
|
||||||
|
UserInfoComponentModule.forRoot()
|
||||||
|
],
|
||||||
|
declarations: [ UserInfoDemo ],
|
||||||
|
bootstrap: [ UserInfoDemo ]
|
||||||
|
})
|
||||||
|
export class AppModule { }
|
||||||
|
|
||||||
|
platformBrowserDynamic().bootstrapModule(AppModule);
|
49
ng2-components/ng2-alfresco-userinfo/demo/systemjs.config.js
Normal file
49
ng2-components/ng2-alfresco-userinfo/demo/systemjs.config.js
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
/**
|
||||||
|
* System configuration for Angular 2 samples
|
||||||
|
* Adjust as necessary for your application needs.
|
||||||
|
*/
|
||||||
|
(function (global) {
|
||||||
|
System.config({
|
||||||
|
paths: {
|
||||||
|
// paths serve as alias
|
||||||
|
'npm:': 'node_modules/'
|
||||||
|
},
|
||||||
|
// map tells the System loader where to look for things
|
||||||
|
map: {
|
||||||
|
// our app is within the app folder
|
||||||
|
app: 'dist',
|
||||||
|
// angular bundles
|
||||||
|
'@angular/core': 'npm:@angular/core/bundles/core.umd.js',
|
||||||
|
'@angular/common': 'npm:@angular/common/bundles/common.umd.js',
|
||||||
|
'@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js',
|
||||||
|
'@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js',
|
||||||
|
'@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',
|
||||||
|
'@angular/http': 'npm:@angular/http/bundles/http.umd.js',
|
||||||
|
'@angular/router': 'npm:@angular/router/bundles/router.umd.js',
|
||||||
|
'@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js',
|
||||||
|
// other libraries
|
||||||
|
'rxjs': 'npm:rxjs',
|
||||||
|
'ng2-translate': 'npm:ng2-translate',
|
||||||
|
'ng2-alfresco-core': 'npm:ng2-alfresco-core/dist',
|
||||||
|
'ng2-alfresco-login': 'npm:ng2-alfresco-login/dist',
|
||||||
|
'ng2-alfresco-userinfo': 'npm:ng2-alfresco-userinfo/dist',
|
||||||
|
'alfresco-js-api': 'npm:alfresco-js-api/dist'
|
||||||
|
},
|
||||||
|
// packages tells the System loader how to load when no filename and/or no extension
|
||||||
|
packages: {
|
||||||
|
app: {
|
||||||
|
main: './main.js',
|
||||||
|
defaultExtension: 'js'
|
||||||
|
},
|
||||||
|
rxjs: {
|
||||||
|
defaultExtension: 'js'
|
||||||
|
},
|
||||||
|
'ng2-translate': { defaultExtension: 'js' },
|
||||||
|
|
||||||
|
'ng2-alfresco-core': { main: './index.js', defaultExtension: 'js'},
|
||||||
|
'ng2-alfresco-login': { main: './index.js', defaultExtension: 'js'},
|
||||||
|
'ng2-alfresco-userinfo': { main: './index.js', defaultExtension: 'js'},
|
||||||
|
'alfresco-js-api': { main: './alfresco-js-api.js', defaultExtension: 'js'}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})(this);
|
26
ng2-components/ng2-alfresco-userinfo/demo/tsconfig.json
Normal file
26
ng2-components/ng2-alfresco-userinfo/demo/tsconfig.json
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"target": "es5",
|
||||||
|
"module": "system",
|
||||||
|
"moduleResolution": "node",
|
||||||
|
"emitDecoratorMetadata": true,
|
||||||
|
"experimentalDecorators": true,
|
||||||
|
"sourceMap": true,
|
||||||
|
"removeComments": true,
|
||||||
|
"declaration": true,
|
||||||
|
"noLib": false,
|
||||||
|
"allowUnreachableCode": false,
|
||||||
|
"allowUnusedLabels": false,
|
||||||
|
"noImplicitAny": false,
|
||||||
|
"noImplicitReturns": false,
|
||||||
|
"noImplicitUseStrict": false,
|
||||||
|
"noFallthroughCasesInSwitch": true,
|
||||||
|
"outDir": "dist",
|
||||||
|
"types": ["core-js", "jasmine"]
|
||||||
|
},
|
||||||
|
"exclude": [
|
||||||
|
"demo",
|
||||||
|
"node_modules",
|
||||||
|
"dist"
|
||||||
|
]
|
||||||
|
}
|
121
ng2-components/ng2-alfresco-userinfo/demo/tslint.json
Normal file
121
ng2-components/ng2-alfresco-userinfo/demo/tslint.json
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
{
|
||||||
|
"rules": {
|
||||||
|
"align": [
|
||||||
|
true,
|
||||||
|
"parameters",
|
||||||
|
"statements"
|
||||||
|
],
|
||||||
|
"ban": false,
|
||||||
|
"class-name": true,
|
||||||
|
"comment-format": [
|
||||||
|
true,
|
||||||
|
"check-space"
|
||||||
|
],
|
||||||
|
"curly": true,
|
||||||
|
"eofline": true,
|
||||||
|
"forin": true,
|
||||||
|
"indent": [
|
||||||
|
true,
|
||||||
|
"spaces"
|
||||||
|
],
|
||||||
|
"interface-name": false,
|
||||||
|
"jsdoc-format": true,
|
||||||
|
"label-position": true,
|
||||||
|
"label-undefined": true,
|
||||||
|
"max-line-length": [
|
||||||
|
true,
|
||||||
|
180
|
||||||
|
],
|
||||||
|
"member-ordering": [
|
||||||
|
true,
|
||||||
|
"static-before-instance",
|
||||||
|
"variables-before-functions"
|
||||||
|
],
|
||||||
|
"no-any": false,
|
||||||
|
"no-arg": true,
|
||||||
|
"no-bitwise": false,
|
||||||
|
"no-conditional-assignment": true,
|
||||||
|
"no-consecutive-blank-lines": false,
|
||||||
|
"no-console": [
|
||||||
|
true,
|
||||||
|
"debug",
|
||||||
|
"info",
|
||||||
|
"time",
|
||||||
|
"timeEnd",
|
||||||
|
"trace"
|
||||||
|
],
|
||||||
|
"no-construct": true,
|
||||||
|
"no-constructor-vars": false,
|
||||||
|
"no-debugger": true,
|
||||||
|
"no-duplicate-key": true,
|
||||||
|
"no-duplicate-variable": true,
|
||||||
|
"no-empty": false,
|
||||||
|
"no-eval": true,
|
||||||
|
"no-inferrable-types": false,
|
||||||
|
"no-internal-module": true,
|
||||||
|
"no-require-imports": true,
|
||||||
|
"no-shadowed-variable": true,
|
||||||
|
"no-switch-case-fall-through": true,
|
||||||
|
"no-trailing-whitespace": true,
|
||||||
|
"no-unreachable": true,
|
||||||
|
"no-unused-expression": true,
|
||||||
|
"no-unused-variable": true,
|
||||||
|
"no-use-before-declare": true,
|
||||||
|
"no-var-keyword": true,
|
||||||
|
"no-var-requires": true,
|
||||||
|
"object-literal-sort-keys": false,
|
||||||
|
"one-line": [
|
||||||
|
true,
|
||||||
|
"check-open-brace",
|
||||||
|
"check-catch",
|
||||||
|
"check-else",
|
||||||
|
"check-whitespace"
|
||||||
|
],
|
||||||
|
"quotemark": [
|
||||||
|
true,
|
||||||
|
"single",
|
||||||
|
"avoid-escape"
|
||||||
|
],
|
||||||
|
"radix": true,
|
||||||
|
"semicolon": true,
|
||||||
|
"switch-default": true,
|
||||||
|
"trailing-comma": [
|
||||||
|
true,
|
||||||
|
{
|
||||||
|
"multiline": "never",
|
||||||
|
"singleline": "never"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"triple-equals": [
|
||||||
|
true,
|
||||||
|
"allow-null-check"
|
||||||
|
],
|
||||||
|
"typedef": false,
|
||||||
|
"typedef-whitespace": [
|
||||||
|
true,
|
||||||
|
{
|
||||||
|
"call-signature": "nospace",
|
||||||
|
"index-signature": "nospace",
|
||||||
|
"parameter": "nospace",
|
||||||
|
"property-declaration": "nospace",
|
||||||
|
"variable-declaration": "nospace"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"use-strict": false,
|
||||||
|
"variable-name": [
|
||||||
|
true,
|
||||||
|
"check-format",
|
||||||
|
"allow-leading-underscore",
|
||||||
|
"ban-keywords"
|
||||||
|
],
|
||||||
|
"whitespace": [
|
||||||
|
true,
|
||||||
|
"check-branch",
|
||||||
|
"check-operator",
|
||||||
|
"check-separator",
|
||||||
|
"check-type",
|
||||||
|
"check-module",
|
||||||
|
"check-decl"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
62
ng2-components/ng2-alfresco-userinfo/index.ts
Normal file
62
ng2-components/ng2-alfresco-userinfo/index.ts
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
/*!
|
||||||
|
* @license
|
||||||
|
* Copyright 2016 Alfresco Software, Ltd.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { NgModule, ModuleWithProviders } from '@angular/core';
|
||||||
|
import { CoreModule } from 'ng2-alfresco-core';
|
||||||
|
|
||||||
|
import { UserInfoComponent } from './src/components/user-info.component';
|
||||||
|
import { EcmUserService } from './src/services/ecm-user.service';
|
||||||
|
import { BpmUserService } from './src/services/bpm-user.service';
|
||||||
|
|
||||||
|
export * from './src/components/user-info.component';
|
||||||
|
export * from './src/services/bpm-user.service';
|
||||||
|
export * from './src/services/ecm-user.service';
|
||||||
|
|
||||||
|
export const USER_INFO_DIRECTIVES: any[] = [
|
||||||
|
UserInfoComponent
|
||||||
|
];
|
||||||
|
|
||||||
|
export const USER_INFO_PROVIDERS: any[] = [
|
||||||
|
EcmUserService,
|
||||||
|
BpmUserService
|
||||||
|
];
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
imports: [
|
||||||
|
CoreModule
|
||||||
|
],
|
||||||
|
declarations: [
|
||||||
|
...USER_INFO_DIRECTIVES
|
||||||
|
],
|
||||||
|
providers: [
|
||||||
|
...USER_INFO_PROVIDERS
|
||||||
|
],
|
||||||
|
exports: [
|
||||||
|
...USER_INFO_DIRECTIVES
|
||||||
|
]
|
||||||
|
})
|
||||||
|
export class UserInfoComponentModule {
|
||||||
|
static forRoot(): ModuleWithProviders {
|
||||||
|
return {
|
||||||
|
ngModule: UserInfoComponentModule,
|
||||||
|
providers: [
|
||||||
|
...USER_INFO_PROVIDERS
|
||||||
|
]
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
128
ng2-components/ng2-alfresco-userinfo/karma-test-shim.js
Normal file
128
ng2-components/ng2-alfresco-userinfo/karma-test-shim.js
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
// Tun on full stack traces in errors to help debugging
|
||||||
|
Error.stackTraceLimit = Infinity;
|
||||||
|
|
||||||
|
jasmine.DEFAULT_TIMEOUT_INTERVAL = 1000;
|
||||||
|
|
||||||
|
__karma__.loaded = function() {};
|
||||||
|
|
||||||
|
var builtPath = '/base/dist/';
|
||||||
|
|
||||||
|
function isJsFile(path) {
|
||||||
|
return path.slice(-3) == '.js';
|
||||||
|
}
|
||||||
|
|
||||||
|
function isSpecFile(path) {
|
||||||
|
return /\.spec\.(.*\.)?js$/.test(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
function isBuiltFile(path) {
|
||||||
|
return isJsFile(path) && (path.substr(0, builtPath.length) == builtPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
var allSpecFiles = Object.keys(window.__karma__.files)
|
||||||
|
.filter(isSpecFile)
|
||||||
|
.filter(isBuiltFile);
|
||||||
|
|
||||||
|
var paths = {
|
||||||
|
// paths serve as alias
|
||||||
|
'npm:': 'base/node_modules/'
|
||||||
|
};
|
||||||
|
|
||||||
|
var map = {
|
||||||
|
'app': 'base/dist',
|
||||||
|
// angular bundles
|
||||||
|
'@angular/core': 'npm:@angular/core/bundles/core.umd.js',
|
||||||
|
'@angular/common': 'npm:@angular/common/bundles/common.umd.js',
|
||||||
|
'@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js',
|
||||||
|
'@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js',
|
||||||
|
'@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',
|
||||||
|
'@angular/http': 'npm:@angular/http/bundles/http.umd.js',
|
||||||
|
'@angular/router': 'npm:@angular/router/bundles/router.umd.js',
|
||||||
|
'@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js',
|
||||||
|
// testing
|
||||||
|
'@angular/core/testing': 'npm:@angular/core/bundles/core-testing.umd.js',
|
||||||
|
'@angular/common/testing': 'npm:@angular/common/bundles/common-testing.umd.js',
|
||||||
|
'@angular/compiler/testing': 'npm:@angular/compiler/bundles/compiler-testing.umd.js',
|
||||||
|
'@angular/platform-browser/testing': 'npm:@angular/platform-browser/bundles/platform-browser-testing.umd.js',
|
||||||
|
'@angular/platform-browser-dynamic/testing': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic-testing.umd.js',
|
||||||
|
'@angular/http/testing': 'npm:@angular/http/bundles/http-testing.umd.js',
|
||||||
|
'@angular/router/testing': 'npm:@angular/router/bundles/router-testing.umd.js',
|
||||||
|
'@angular/forms/testing': 'npm:@angular/forms/bundles/forms-testing.umd.js',
|
||||||
|
|
||||||
|
// other libraries
|
||||||
|
'rxjs': 'npm:rxjs',
|
||||||
|
'ng2-translate': 'npm:ng2-translate',
|
||||||
|
|
||||||
|
'alfresco-js-api': 'npm:alfresco-js-api/dist',
|
||||||
|
'ng2-activiti-form': 'npm:ng2-activiti-form/dist',
|
||||||
|
'ng2-activiti-processlist': 'npm:ng2-activiti-processlist/dist',
|
||||||
|
'ng2-activiti-tasklist': 'npm:ng2-activiti-tasklist/dist',
|
||||||
|
'ng2-alfresco-core': 'npm:ng2-alfresco-core/dist',
|
||||||
|
'ng2-alfresco-datatable': 'npm:ng2-alfresco-datatable/dist',
|
||||||
|
'ng2-alfresco-documentlist': 'npm:ng2-alfresco-documentlist/dist',
|
||||||
|
'ng2-alfresco-login': 'npm:ng2-alfresco-login/dist',
|
||||||
|
'ng2-alfresco-search': 'npm:ng2-alfresco-search/dist',
|
||||||
|
'ng2-alfresco-tag': 'npm:ng2-alfresco-tag/dist',
|
||||||
|
'ng2-alfresco-upload': 'npm:ng2-alfresco-upload/dist',
|
||||||
|
'ng2-alfresco-viewer': 'npm:ng2-alfresco-viewer/dist',
|
||||||
|
'ng2-alfresco-webscript': 'npm:ng2-alfresco-webscript/dist',
|
||||||
|
'ng2-alfresco-userinfo': 'npm:ng2-alfresco-userinfo/dist'
|
||||||
|
};
|
||||||
|
|
||||||
|
var packages = {
|
||||||
|
'app': { main: 'main.js', defaultExtension: 'js' },
|
||||||
|
'rxjs': { defaultExtension: 'js' },
|
||||||
|
'ng2-translate': { defaultExtension: 'js' },
|
||||||
|
|
||||||
|
'alfresco-js-api': { main: './alfresco-js-api.js', defaultExtension: 'js'},
|
||||||
|
'ng2-activiti-form': { main: './index.js', defaultExtension: 'js'},
|
||||||
|
'ng2-activiti-processlist': { main: './index.js', defaultExtension: 'js'},
|
||||||
|
'ng2-activiti-tasklist': { main: './index.js', defaultExtension: 'js'},
|
||||||
|
'ng2-alfresco-core': { main: './index.js', defaultExtension: 'js'},
|
||||||
|
'ng2-alfresco-datatable': { main: './index.js', defaultExtension: 'js'},
|
||||||
|
'ng2-alfresco-documentlist': { main: './index.js', defaultExtension: 'js'},
|
||||||
|
'ng2-alfresco-login': { main: './index.js', defaultExtension: 'js'},
|
||||||
|
'ng2-alfresco-search': { main: './index.js', defaultExtension: 'js'},
|
||||||
|
'ng2-alfresco-tag': { main: './index.js', defaultExtension: 'js'},
|
||||||
|
'ng2-alfresco-upload': { main: './index.js', defaultExtension: 'js'},
|
||||||
|
'ng2-alfresco-viewer': { main: './index.js', defaultExtension: 'js'},
|
||||||
|
'ng2-alfresco-webscript': { main: './index.js', defaultExtension: 'js'},
|
||||||
|
'ng2-alfresco-userinfo': { main: './index.js', defaultExtension: 'js'}
|
||||||
|
};
|
||||||
|
|
||||||
|
var config = {
|
||||||
|
paths: paths,
|
||||||
|
map: map,
|
||||||
|
packages: packages
|
||||||
|
};
|
||||||
|
|
||||||
|
System.config(config);
|
||||||
|
|
||||||
|
System.import('@angular/core/testing')
|
||||||
|
.then(initTestBed)
|
||||||
|
.then(initTesting);
|
||||||
|
|
||||||
|
function initTestBed(){
|
||||||
|
return Promise.all([
|
||||||
|
System.import('@angular/core/testing'),
|
||||||
|
System.import('@angular/platform-browser-dynamic/testing')
|
||||||
|
])
|
||||||
|
.then(function (providers) {
|
||||||
|
var coreTesting = providers[0];
|
||||||
|
var browserTesting = providers[1];
|
||||||
|
|
||||||
|
coreTesting.TestBed.initTestEnvironment(
|
||||||
|
browserTesting.BrowserDynamicTestingModule,
|
||||||
|
browserTesting.platformBrowserDynamicTesting());
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// Import all spec files and start karma
|
||||||
|
function initTesting () {
|
||||||
|
return Promise.all(
|
||||||
|
allSpecFiles.map(function (moduleName) {
|
||||||
|
return System.import(moduleName);
|
||||||
|
})
|
||||||
|
)
|
||||||
|
.then(__karma__.start, __karma__.error);
|
||||||
|
}
|
131
ng2-components/ng2-alfresco-userinfo/karma.conf.js
Normal file
131
ng2-components/ng2-alfresco-userinfo/karma.conf.js
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
module.exports = function (config) {
|
||||||
|
var configuration = {
|
||||||
|
basePath: '.',
|
||||||
|
|
||||||
|
frameworks: ['jasmine-ajax', 'jasmine'],
|
||||||
|
|
||||||
|
files: [
|
||||||
|
// System.js for module loading
|
||||||
|
'node_modules/systemjs/dist/system.src.js',
|
||||||
|
|
||||||
|
// Polyfills
|
||||||
|
'node_modules/core-js/client/shim.js',
|
||||||
|
'node_modules/reflect-metadata/Reflect.js',
|
||||||
|
|
||||||
|
// zone.js
|
||||||
|
'node_modules/zone.js/dist/zone.js',
|
||||||
|
'node_modules/zone.js/dist/long-stack-trace-zone.js',
|
||||||
|
'node_modules/zone.js/dist/proxy.js',
|
||||||
|
'node_modules/zone.js/dist/sync-test.js',
|
||||||
|
'node_modules/zone.js/dist/jasmine-patch.js',
|
||||||
|
'node_modules/zone.js/dist/async-test.js',
|
||||||
|
'node_modules/zone.js/dist/fake-async-test.js',
|
||||||
|
|
||||||
|
// RxJs
|
||||||
|
{ pattern: 'node_modules/rxjs/**/*.js', included: false, watched: false },
|
||||||
|
{ pattern: 'node_modules/rxjs/**/*.js.map', included: false, watched: false },
|
||||||
|
|
||||||
|
// Paths loaded via module imports:
|
||||||
|
// Angular itself
|
||||||
|
{pattern: 'node_modules/@angular/**/*.js', included: false, watched: false},
|
||||||
|
{pattern: 'node_modules/@angular/**/*.js.map', included: false, watched: false},
|
||||||
|
|
||||||
|
'node_modules/alfresco-js-api/dist/alfresco-js-api.js',
|
||||||
|
{pattern: 'node_modules/ng2-translate/**/*.js', included: false, watched: false},
|
||||||
|
{pattern: 'node_modules/ng2-translate/**/*.js.map', included: false, watched: false},
|
||||||
|
|
||||||
|
'karma-test-shim.js',
|
||||||
|
|
||||||
|
// paths loaded via module imports
|
||||||
|
{pattern: 'dist/**/*.js', included: false, watched: true},
|
||||||
|
{pattern: 'dist/**/*.html', included: true, served: true, watched: true},
|
||||||
|
{pattern: 'dist/**/*.css', included: true, served: true, watched: true},
|
||||||
|
|
||||||
|
// ng2-components
|
||||||
|
{ pattern: 'node_modules/ng2-activiti-form/dist/**/*.js', included: false, served: true, watched: false },
|
||||||
|
{ pattern: 'node_modules/ng2-activiti-processlist/dist/**/*.js', included: false, served: true, watched: false },
|
||||||
|
{ pattern: 'node_modules/ng2-activiti-tasklist/dist/**/*.js', included: false, served: true, watched: false },
|
||||||
|
{ pattern: 'node_modules/ng2-alfresco-core/dist/**/*.js', included: false, served: true, watched: false },
|
||||||
|
{ pattern: 'node_modules/ng2-alfresco-datatable/dist/**/*.js', included: false, served: true, watched: false },
|
||||||
|
{ pattern: 'node_modules/ng2-alfresco-documentlist/dist/**/*.js', included: false, served: true, watched: false },
|
||||||
|
{ pattern: 'node_modules/ng2-alfresco-login/dist/**/*.js', included: false, served: true, watched: false },
|
||||||
|
{ pattern: 'node_modules/ng2-alfresco-search/dist/**/*.js', included: false, served: true, watched: false },
|
||||||
|
{ pattern: 'node_modules/ng2-alfresco-tag/dist/**/*.js', included: false, served: true, watched: false },
|
||||||
|
{ pattern: 'node_modules/ng2-alfresco-upload/dist/**/*.js', included: false, served: true, watched: false },
|
||||||
|
{ pattern: 'node_modules/ng2-alfresco-viewer/dist/**/*.js', included: false, served: true, watched: false },
|
||||||
|
{ pattern: 'node_modules/ng2-alfresco-webscript/dist/**/*.js', included: false, served: true, watched: false },
|
||||||
|
{ pattern: 'node_modules/ng2-alfresco-userinfo/dist/**/*.js', included: false, served: true, watched: false },
|
||||||
|
|
||||||
|
// paths to support debugging with source maps in dev tools
|
||||||
|
{pattern: 'src/**/*.ts', included: false, watched: false},
|
||||||
|
{pattern: 'dist/**/*.js.map', included: false, watched: false}
|
||||||
|
],
|
||||||
|
|
||||||
|
exclude: [
|
||||||
|
'node_modules/**/*spec.js'
|
||||||
|
],
|
||||||
|
|
||||||
|
// proxied base paths
|
||||||
|
proxies: {
|
||||||
|
// required for component assets fetched by Angular's compiler
|
||||||
|
'/src/': '/base/src/'
|
||||||
|
},
|
||||||
|
|
||||||
|
port: 9876,
|
||||||
|
|
||||||
|
// level of logging
|
||||||
|
// possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
|
||||||
|
logLevel: config.LOG_INFO,
|
||||||
|
|
||||||
|
colors: true,
|
||||||
|
|
||||||
|
autoWatch: true,
|
||||||
|
|
||||||
|
browsers: ['Chrome'],
|
||||||
|
|
||||||
|
customLaunchers: {
|
||||||
|
Chrome_travis_ci: {
|
||||||
|
base: 'Chrome',
|
||||||
|
flags: ['--no-sandbox']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// Karma plugins loaded
|
||||||
|
plugins: [
|
||||||
|
'karma-jasmine',
|
||||||
|
'karma-coverage',
|
||||||
|
'karma-jasmine-ajax',
|
||||||
|
'karma-chrome-launcher',
|
||||||
|
'karma-mocha-reporter',
|
||||||
|
'karma-jasmine-html-reporter'
|
||||||
|
],
|
||||||
|
|
||||||
|
// Coverage reporter generates the coverage
|
||||||
|
reporters: ['mocha', 'coverage', 'kjhtml'],
|
||||||
|
|
||||||
|
// Source files that you wanna generate coverage for.
|
||||||
|
// Do not include tests or libraries (these files will be instrumented by Istanbul)
|
||||||
|
preprocessors: {
|
||||||
|
// 'dist/**/!(*spec).js': ['coverage']
|
||||||
|
},
|
||||||
|
|
||||||
|
coverageReporter: {
|
||||||
|
dir: 'coverage/',
|
||||||
|
subdir: 'report',
|
||||||
|
reporters: [
|
||||||
|
{type: 'text'},
|
||||||
|
{type: 'json', file: 'coverage-final.json'},
|
||||||
|
{type: 'html'},
|
||||||
|
{type: 'lcov'}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
if (process.env.TRAVIS) {
|
||||||
|
configuration.browsers = ['Chrome_travis_ci'];
|
||||||
|
}
|
||||||
|
|
||||||
|
config.set(configuration)
|
||||||
|
};
|
89
ng2-components/ng2-alfresco-userinfo/package.json
Normal file
89
ng2-components/ng2-alfresco-userinfo/package.json
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
{
|
||||||
|
"name": "ng2-alfresco-userinfo",
|
||||||
|
"description": "Alfresco User Info component",
|
||||||
|
"version": "0.3.2",
|
||||||
|
"author": "Alfresco Software, Ltd.",
|
||||||
|
"main": "./dist/index.js",
|
||||||
|
"typings": "./dist/index.d.ts",
|
||||||
|
"scripts": {
|
||||||
|
"clean": "rimraf dist node_modules",
|
||||||
|
"build": "npm run tslint && rimraf dist && tsc && npm run copy-dist && license-check",
|
||||||
|
"build:w": "npm run tslint && rimraf dist && npm run watch-task",
|
||||||
|
"watch-task": "concurrently \"npm run tsc:w\" \"npm run copy-dist:w\" \"license-check\"",
|
||||||
|
"tslint": "tslint -c tslint.json *.ts && tslint -c tslint.json 'src/{,**/}**.ts'",
|
||||||
|
"copy-dist": "cpx \"./src/**/*.{html,css,json,png,jpg,gif,svg}\" ./dist/src",
|
||||||
|
"copy-dist:w": "cpx \"./src/**/*.{html,css,json,png,jpg,gif,svg}\" ./dist/src -w",
|
||||||
|
"tsc": "tsc",
|
||||||
|
"tsc:w": "tsc -w",
|
||||||
|
"pretest": "npm run build",
|
||||||
|
"test": "karma start karma.conf.js --reporters mocha,coverage --single-run",
|
||||||
|
"test-browser": "npm run build && concurrently \"karma start karma.conf.js --reporters kjhtml\" \"npm run watch-task\"",
|
||||||
|
"posttest": "remap-istanbul -i coverage/report/coverage-final.json -o coverage/report -t html && remap-istanbul -i coverage/report/coverage-final.json -o coverage/report/coverage-final.json",
|
||||||
|
"coverage": "npm run test && wsrv -o -p 9875 ./coverage/report",
|
||||||
|
"prepublish": "npm run build",
|
||||||
|
"travis": "echo 'placeholder'"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/Alfresco/alfresco-ng2-components.git"
|
||||||
|
},
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/Alfresco/alfresco-ng2-components/issues"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@angular/common": "2.0.0",
|
||||||
|
"@angular/compiler": "2.0.0",
|
||||||
|
"@angular/core": "2.0.0",
|
||||||
|
"@angular/forms": "2.0.0",
|
||||||
|
"@angular/http": "2.0.0",
|
||||||
|
"@angular/platform-browser": "2.0.0",
|
||||||
|
"@angular/platform-browser-dynamic": "2.0.0",
|
||||||
|
"@angular/router": "3.0.0",
|
||||||
|
"@angular/upgrade": "2.0.0",
|
||||||
|
"core-js": "^2.4.1",
|
||||||
|
"reflect-metadata": "^0.1.3",
|
||||||
|
"rxjs": "5.0.0-beta.12",
|
||||||
|
"systemjs": "0.19.27",
|
||||||
|
"zone.js": "^0.6.23",
|
||||||
|
|
||||||
|
"alfresco-js-api": "^0.3.0",
|
||||||
|
"ng2-translate": "2.5.0",
|
||||||
|
"ng2-alfresco-core": "0.3.2"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/core-js": "^0.9.32",
|
||||||
|
"@types/jasmine": "^2.2.33",
|
||||||
|
"concurrently": "^2.2.0",
|
||||||
|
"cpx": "^1.3.1",
|
||||||
|
"jasmine-ajax": "^3.2.0",
|
||||||
|
"jasmine-core": "2.4.1",
|
||||||
|
"karma": "~0.13.22",
|
||||||
|
"karma-chrome-launcher": "~1.0.1",
|
||||||
|
"karma-coverage": "^1.0.0",
|
||||||
|
"karma-jasmine": "~1.0.2",
|
||||||
|
"karma-jasmine-ajax": "^0.1.13",
|
||||||
|
"karma-jasmine-html-reporter": "^0.2.0",
|
||||||
|
"karma-mocha-reporter": "^2.0.3",
|
||||||
|
"license-check": "^1.0.4",
|
||||||
|
"remap-istanbul": "^0.6.3",
|
||||||
|
"rimraf": "2.5.2",
|
||||||
|
"traceur": "^0.0.91",
|
||||||
|
"tslint": "^3.8.1",
|
||||||
|
"typescript": "^2.0.3",
|
||||||
|
"wsrv": "^0.1.5"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"userinfo",
|
||||||
|
"alfresco-component"
|
||||||
|
],
|
||||||
|
"license-check-config": {
|
||||||
|
"src": [
|
||||||
|
"./dist/**/*.js"
|
||||||
|
],
|
||||||
|
"path": "assets/license_header.txt",
|
||||||
|
"blocking": false,
|
||||||
|
"logInfo": false,
|
||||||
|
"logError": true
|
||||||
|
},
|
||||||
|
"license": "Apache-2.0"
|
||||||
|
}
|
@ -0,0 +1,53 @@
|
|||||||
|
.profile-image {
|
||||||
|
text-align: center;
|
||||||
|
border-radius: 90%;
|
||||||
|
width: 40px;
|
||||||
|
margin-right: 0%;
|
||||||
|
cursor: pointer;
|
||||||
|
border: 1px solid #999999;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-profile {
|
||||||
|
display: inline-block;
|
||||||
|
border: 0px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-user-profile-list-mdl{
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.user-profile-list-mdl{
|
||||||
|
max-height: 450px;
|
||||||
|
min-width: 450px;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-profile{
|
||||||
|
color: rgb(255,152,0);
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
hr.title-start {
|
||||||
|
border: 0;
|
||||||
|
height: 1px;
|
||||||
|
background: #333;
|
||||||
|
background-image: linear-gradient(to right, #ccc, #333, #ccc);
|
||||||
|
}
|
||||||
|
|
||||||
|
span.role-label-user{
|
||||||
|
font-weight: 400;
|
||||||
|
line-height: 1;
|
||||||
|
letter-spacing: 0;
|
||||||
|
color: rgba(0,0,0,.87);
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-role-style{
|
||||||
|
font-size: 14px;
|
||||||
|
color: #9e9e9e;
|
||||||
|
}
|
||||||
|
|
||||||
|
.truncate-long-names{
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
@ -0,0 +1,63 @@
|
|||||||
|
<div id="img_container">
|
||||||
|
<span *ngIf="ecmUser">{{ecmUser.firstName || ecmUser.lastName}}</span>
|
||||||
|
<span *ngIf="bpmUser && !ecmUser">
|
||||||
|
{{ formatValue(bpmUser.firstName) ||
|
||||||
|
formatValue(bpmUser.lastName) ||
|
||||||
|
formatValue(bpmUser.fullName) }}
|
||||||
|
</span>
|
||||||
|
<div class="button-profile" id="user-profile" data-automation-id="user-profile">
|
||||||
|
<img id="logged-user-img"
|
||||||
|
[src]="getUserAvatar()"
|
||||||
|
class="profile-image"/>
|
||||||
|
</div>
|
||||||
|
<div class="user-profile-list-mdl
|
||||||
|
mdl-menu mdl-menu--bottom-right
|
||||||
|
mdl-js-menu mdl-js-ripple-effect"
|
||||||
|
for="user-profile">
|
||||||
|
<ul class='detail-user-profile-list-mdl mdl-list'>
|
||||||
|
<div *ngIf="ecmUser">
|
||||||
|
<hr class="title-start">
|
||||||
|
<span class="header-profile"><b>ECM</b></span>
|
||||||
|
<li class="mdl-list__item mdl-list__item--two-line">
|
||||||
|
<span class="mdl-list__item-primary-content">
|
||||||
|
<i class="mdl-list__item-avatar">
|
||||||
|
<img id="logged-user-img"
|
||||||
|
[src]="getEcmUserDetailAvatarUrl()"
|
||||||
|
class="profile-image"/>
|
||||||
|
</i>
|
||||||
|
<span class="truncate-long-names">{{ecmUser.firstName}} {{ecmUser.lastName}}</span>
|
||||||
|
<span class="mdl-list__item-sub-title">{{ecmUser.email}}</span>
|
||||||
|
</span>
|
||||||
|
<span class="mdl-list__item-secondary-content custom-role-style">
|
||||||
|
<span class="role-label-user">Job Role</span>
|
||||||
|
{{ ecmUser.jobTitle ? ecmUser.jobTitle : 'N/A' }}
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
</div>
|
||||||
|
<br>
|
||||||
|
<div *ngIf="bpmUser">
|
||||||
|
<hr class="title-start">
|
||||||
|
<span class="header-profile"><b>BPM</b></span>
|
||||||
|
<li class="mdl-list__item mdl-list__item--two-line">
|
||||||
|
<span class="mdl-list__item-primary-content">
|
||||||
|
<i class="mdl-list__item-avatar">
|
||||||
|
<img id="logged-user-img"
|
||||||
|
[src]="getBpmUserDetailAvatarUrl()"
|
||||||
|
class="profile-image"/>
|
||||||
|
</i>
|
||||||
|
<span class="truncate-long-names">
|
||||||
|
{{formatValue(bpmUser.firstName) }} {{ formatValue(bpmUser.lastName) }}
|
||||||
|
</span>
|
||||||
|
<span class="mdl-list__item-sub-title">{{bpmUser.email}}</span>
|
||||||
|
</span>
|
||||||
|
<span class="mdl-list__item-secondary-content custom-role-style">
|
||||||
|
<span class="role-label-user">Tenant</span>
|
||||||
|
{{bpmUser.tenantName}}
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
</div>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
@ -0,0 +1,250 @@
|
|||||||
|
/*!
|
||||||
|
* @license
|
||||||
|
* Copyright 2016 Alfresco Software, Ltd.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { UserInfoComponent } from './user-info.component';
|
||||||
|
import { EcmUserService } from '../services/ecm-user.service';
|
||||||
|
import { BpmUserService } from '../services/bpm-user.service';
|
||||||
|
import { FakeEcmUserService } from '../testing/fake-ecm-user.service';
|
||||||
|
import { FakeBpmUserService } from '../testing/fake-bpm-user.service';
|
||||||
|
import { AlfrescoAuthenticationService, AlfrescoContentService } from 'ng2-alfresco-core';
|
||||||
|
import { ComponentFixture, TestBed, async } from '@angular/core/testing';
|
||||||
|
|
||||||
|
|
||||||
|
class StubAuthentication {
|
||||||
|
isEcmConnected: boolean;
|
||||||
|
isBpmConnected: boolean;
|
||||||
|
setIsEcmLoggedIn(logged: boolean) { this.isEcmConnected = logged; };
|
||||||
|
setIsBpmLoggedIn(logged: boolean) { this.isBpmConnected = logged; };
|
||||||
|
isEcmLoggedIn() { return this.isEcmConnected; };
|
||||||
|
isBpmLoggedIn() { return this.isBpmConnected; };
|
||||||
|
}
|
||||||
|
|
||||||
|
class StubAlfrescoContentService {
|
||||||
|
getContentUrl() { return 'fake/url/image/for/ecm/user'; } ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
describe('User info component', () => {
|
||||||
|
|
||||||
|
let userInfoComp: UserInfoComponent;
|
||||||
|
let fixture: ComponentFixture<UserInfoComponent>;
|
||||||
|
let authStub: StubAuthentication;
|
||||||
|
let fakeEcmService: FakeEcmUserService;
|
||||||
|
let fakeBpmService: FakeBpmUserService;
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [ UserInfoComponent ],
|
||||||
|
providers: [{ provide: EcmUserService, useClass: FakeEcmUserService},
|
||||||
|
{ provide: BpmUserService, useClass: FakeBpmUserService},
|
||||||
|
{ provide: AlfrescoAuthenticationService, useClass: StubAuthentication },
|
||||||
|
{ provide: AlfrescoContentService, useClass: StubAlfrescoContentService }
|
||||||
|
]
|
||||||
|
}).compileComponents().then(() => {
|
||||||
|
fixture = TestBed.createComponent(UserInfoComponent);
|
||||||
|
userInfoComp = fixture.componentInstance;
|
||||||
|
});
|
||||||
|
}));
|
||||||
|
|
||||||
|
it('should NOT have users before ngOnInit only anonymous image', () => {
|
||||||
|
expect(userInfoComp.ecmUser).toBeUndefined();
|
||||||
|
expect(userInfoComp.ecmUserImage).toBeUndefined();
|
||||||
|
expect(userInfoComp.bpmUser).toBeUndefined();
|
||||||
|
expect(userInfoComp.bpmUserImage).toBeUndefined();
|
||||||
|
expect(userInfoComp.anonymouseImageUrl).toBeDefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should NOT have users immediately after ngOnInit', () => {
|
||||||
|
fixture.detectChanges();
|
||||||
|
expect(userInfoComp.ecmUser).toBeUndefined();
|
||||||
|
expect(userInfoComp.ecmUserImage).toBeUndefined();
|
||||||
|
expect(userInfoComp.bpmUser).toBeUndefined();
|
||||||
|
expect(userInfoComp.bpmUserImage).toBeUndefined();
|
||||||
|
expect(userInfoComp.anonymouseImageUrl).toBeDefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('when user is logged on ecm', () => {
|
||||||
|
|
||||||
|
beforeEach( async(() => {
|
||||||
|
authStub = fixture.debugElement.injector.get(AlfrescoAuthenticationService);
|
||||||
|
fakeEcmService = fixture.debugElement.injector.get(EcmUserService);
|
||||||
|
|
||||||
|
authStub.setIsEcmLoggedIn(true);
|
||||||
|
fixture.detectChanges(); // runs ngOnInit -> getUsers
|
||||||
|
fixture.whenStable()
|
||||||
|
.then( () => {
|
||||||
|
fixture.detectChanges();
|
||||||
|
} );
|
||||||
|
}));
|
||||||
|
|
||||||
|
it('should get the ecm current user image from the service', () => {
|
||||||
|
expect(userInfoComp.ecmUser).toBeDefined();
|
||||||
|
expect(userInfoComp.ecmUserImage).toBeDefined();
|
||||||
|
expect(userInfoComp.ecmUserImage).toEqual('fake/url/image/for/ecm/user');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should get the ecm user informations from the service', () => {
|
||||||
|
expect(userInfoComp.ecmUser).toBeDefined();
|
||||||
|
expect(userInfoComp.ecmUser.firstName).toEqual('fake-first-name');
|
||||||
|
expect(userInfoComp.ecmUser.lastName).toEqual('fake-last-name');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return the anonynous user avatar image url when user does not have avatarId', async(() => {
|
||||||
|
fakeEcmService.respondWithTheUserWithoutImage();
|
||||||
|
userInfoComp.ngOnInit();
|
||||||
|
fixture.whenStable()
|
||||||
|
.then( () => {
|
||||||
|
fixture.detectChanges();
|
||||||
|
let res = userInfoComp.getEcmUserDetailAvatarUrl();
|
||||||
|
expect(userInfoComp.ecmUserImage).toBeUndefined();
|
||||||
|
expect(res).toEqual(userInfoComp.anonymouseImageUrl);
|
||||||
|
});
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('when user is logged on bpm', () => {
|
||||||
|
|
||||||
|
beforeEach( async(() => {
|
||||||
|
authStub = fixture.debugElement.injector.get(AlfrescoAuthenticationService);
|
||||||
|
fakeBpmService = fixture.debugElement.injector.get(BpmUserService);
|
||||||
|
|
||||||
|
authStub.setIsBpmLoggedIn(true);
|
||||||
|
fixture.detectChanges(); // runs ngOnInit -> getUsers
|
||||||
|
fixture.whenStable()
|
||||||
|
.then( () => {
|
||||||
|
fixture.detectChanges();
|
||||||
|
} );
|
||||||
|
}));
|
||||||
|
|
||||||
|
it('should get the bpm current user image from the service', () => {
|
||||||
|
expect(userInfoComp.bpmUser).toBeDefined();
|
||||||
|
expect(userInfoComp.bpmUserImage).toBeDefined();
|
||||||
|
expect(userInfoComp.bpmUserImage).toEqual('fake-picture-id');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should get the bpm user informations from the service', () => {
|
||||||
|
expect(userInfoComp.bpmUser).toBeDefined();
|
||||||
|
expect(userInfoComp.bpmUser.firstName).toEqual('fake-first-name');
|
||||||
|
expect(userInfoComp.bpmUser.lastName).toEqual('fake-last-name');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return the anonynous user avatar image url when user does not have avatarId', async(() => {
|
||||||
|
fakeBpmService.respondWithTheUserWithoutImage();
|
||||||
|
userInfoComp.ngOnInit();
|
||||||
|
fixture.whenStable()
|
||||||
|
.then( () => {
|
||||||
|
fixture.detectChanges();
|
||||||
|
let res = userInfoComp.getBpmUserDetailAvatarUrl();
|
||||||
|
expect(userInfoComp.bpmUserImage).toBeUndefined();
|
||||||
|
expect(res).toEqual(userInfoComp.anonymouseImageUrl);
|
||||||
|
});
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('when user is logged on bpm and ecm', () => {
|
||||||
|
|
||||||
|
beforeEach( async(() => {
|
||||||
|
authStub = fixture.debugElement.injector.get(AlfrescoAuthenticationService);
|
||||||
|
fakeBpmService = fixture.debugElement.injector.get(BpmUserService);
|
||||||
|
fakeEcmService = fixture.debugElement.injector.get(EcmUserService);
|
||||||
|
|
||||||
|
authStub.setIsBpmLoggedIn(true);
|
||||||
|
authStub.setIsEcmLoggedIn(true);
|
||||||
|
fixture.detectChanges(); // runs ngOnInit -> getUsers
|
||||||
|
fixture.whenStable()
|
||||||
|
.then( () => {
|
||||||
|
fixture.detectChanges();
|
||||||
|
} );
|
||||||
|
}));
|
||||||
|
|
||||||
|
it('should get the bpm current user image from the service', () => {
|
||||||
|
expect(userInfoComp.bpmUser).toBeDefined();
|
||||||
|
expect(userInfoComp.bpmUserImage).toBeDefined();
|
||||||
|
expect(userInfoComp.bpmUserImage).toEqual('fake-picture-id');
|
||||||
|
expect(userInfoComp.ecmUser).toBeDefined();
|
||||||
|
expect(userInfoComp.ecmUserImage).toBeDefined();
|
||||||
|
expect(userInfoComp.ecmUserImage).toEqual('fake/url/image/for/ecm/user');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should get the bpm user informations from the service', () => {
|
||||||
|
expect(userInfoComp.bpmUser).toBeDefined();
|
||||||
|
expect(userInfoComp.bpmUser.firstName).toEqual('fake-first-name');
|
||||||
|
expect(userInfoComp.bpmUser.lastName).toEqual('fake-last-name');
|
||||||
|
expect(userInfoComp.ecmUser).toBeDefined();
|
||||||
|
expect(userInfoComp.ecmUser.firstName).toEqual('fake-first-name');
|
||||||
|
expect(userInfoComp.ecmUser.lastName).toEqual('fake-last-name');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return the anonynous user avatar image url when user does not have avatarId', async(() => {
|
||||||
|
fakeBpmService.respondWithTheUserWithoutImage();
|
||||||
|
fakeEcmService.respondWithTheUserWithoutImage();
|
||||||
|
userInfoComp.ngOnInit();
|
||||||
|
fixture.whenStable()
|
||||||
|
.then( () => {
|
||||||
|
fixture.detectChanges();
|
||||||
|
let resBpm = userInfoComp.getBpmUserDetailAvatarUrl();
|
||||||
|
expect(userInfoComp.bpmUserImage).toBeUndefined();
|
||||||
|
expect(resBpm).toEqual(userInfoComp.anonymouseImageUrl);
|
||||||
|
let resEcm = userInfoComp.getEcmUserDetailAvatarUrl();
|
||||||
|
expect(userInfoComp.ecmUserImage).toBeUndefined();
|
||||||
|
expect(resEcm).toEqual(userInfoComp.anonymouseImageUrl);
|
||||||
|
});
|
||||||
|
}));
|
||||||
|
|
||||||
|
it('should return the ecm image if exists', async(() => {
|
||||||
|
fakeBpmService.respondWithTheUserWithImage();
|
||||||
|
fakeEcmService.respondWithTheUserWithImage();
|
||||||
|
userInfoComp.ngOnInit();
|
||||||
|
fixture.whenStable()
|
||||||
|
.then( () => {
|
||||||
|
fixture.detectChanges();
|
||||||
|
let res = userInfoComp.getUserAvatar();
|
||||||
|
expect(userInfoComp.bpmUserImage).toBeDefined();
|
||||||
|
expect(userInfoComp.ecmUserImage).toBeDefined();
|
||||||
|
expect(res).toEqual(userInfoComp.ecmUserImage);
|
||||||
|
});
|
||||||
|
}));
|
||||||
|
|
||||||
|
it('should return the bpm image if ecm does not have it', async(() => {
|
||||||
|
fakeBpmService.respondWithTheUserWithImage();
|
||||||
|
fakeEcmService.respondWithTheUserWithoutImage();
|
||||||
|
userInfoComp.ngOnInit();
|
||||||
|
fixture.whenStable()
|
||||||
|
.then( () => {
|
||||||
|
fixture.detectChanges();
|
||||||
|
let res = userInfoComp.getUserAvatar();
|
||||||
|
expect(userInfoComp.bpmUserImage).toBeDefined();
|
||||||
|
expect(userInfoComp.ecmUserImage).toBeUndefined();
|
||||||
|
expect(res).toEqual(userInfoComp.bpmUserImage);
|
||||||
|
});
|
||||||
|
}));
|
||||||
|
|
||||||
|
it('should return the anonynous avatar if no user has it', async(() => {
|
||||||
|
fakeBpmService.respondWithTheUserWithoutImage();
|
||||||
|
fakeEcmService.respondWithTheUserWithoutImage();
|
||||||
|
userInfoComp.ngOnInit();
|
||||||
|
fixture.whenStable()
|
||||||
|
.then( () => {
|
||||||
|
fixture.detectChanges();
|
||||||
|
let res = userInfoComp.getUserAvatar();
|
||||||
|
expect(userInfoComp.bpmUserImage).toBeUndefined();
|
||||||
|
expect(userInfoComp.ecmUserImage).toBeUndefined();
|
||||||
|
expect(res).toEqual(userInfoComp.anonymouseImageUrl);
|
||||||
|
});
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,94 @@
|
|||||||
|
/*!
|
||||||
|
* @license
|
||||||
|
* Copyright 2016 Alfresco Software, Ltd.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
import { EcmUserModel } from './../models/ecm-user.model';
|
||||||
|
import { BpmUserModel } from './../models/bpm-user.model';
|
||||||
|
import { EcmUserService } from './../services/ecm-user.service';
|
||||||
|
import { BpmUserService } from './../services/bpm-user.service';
|
||||||
|
import { AlfrescoAuthenticationService } from 'ng2-alfresco-core';
|
||||||
|
|
||||||
|
declare let __moduleName: string;
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'ng2-alfresco-userinfo',
|
||||||
|
moduleId: __moduleName,
|
||||||
|
styleUrls: ['./user-info.component.css'],
|
||||||
|
templateUrl: './user-info.component.html'
|
||||||
|
})
|
||||||
|
|
||||||
|
export class UserInfoComponent implements OnInit {
|
||||||
|
|
||||||
|
private baseComponentPath = __moduleName.replace('components/user-info.component.js', '');
|
||||||
|
|
||||||
|
ecmUser: EcmUserModel;
|
||||||
|
bpmUser: BpmUserModel;
|
||||||
|
anonymouseImageUrl: string = this.baseComponentPath + 'img/anonymous.gif';
|
||||||
|
bpmUserImage: any;
|
||||||
|
ecmUserImage: any;
|
||||||
|
|
||||||
|
constructor(private ecmUserService: EcmUserService,
|
||||||
|
private bpmUserService: BpmUserService,
|
||||||
|
public authService: AlfrescoAuthenticationService) {
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit() {
|
||||||
|
if ( this.authService.isEcmLoggedIn() ) {
|
||||||
|
this.ecmUserService.getCurrentUserInfo()
|
||||||
|
.subscribe(
|
||||||
|
(res) => {
|
||||||
|
this.ecmUser = <EcmUserModel> res;
|
||||||
|
this.getEcmUserProfileImage();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if ( this.authService.isBpmLoggedIn() ) {
|
||||||
|
this.bpmUserService.getCurrentUserInfo()
|
||||||
|
.subscribe(
|
||||||
|
(res) => {
|
||||||
|
this.bpmUser = <BpmUserModel> res;
|
||||||
|
this.getBpmUserProfileImage();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private getBpmUserProfileImage() {
|
||||||
|
this.bpmUserImage = this.bpmUserService.getCurrentUserProfileImage();
|
||||||
|
}
|
||||||
|
|
||||||
|
private getEcmUserProfileImage() {
|
||||||
|
this.ecmUserImage = this.ecmUserService.getCurrentUserProfileImageUrl(this.ecmUser.avatarId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public getUserAvatar() {
|
||||||
|
return this.ecmUserImage || this.bpmUserImage || this.anonymouseImageUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public getBpmUserDetailAvatarUrl() {
|
||||||
|
return this.bpmUserImage || this.anonymouseImageUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public getEcmUserDetailAvatarUrl() {
|
||||||
|
return this.ecmUserImage || this.anonymouseImageUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public formatValue(value: string) {
|
||||||
|
return value === 'null' ? null : value;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
BIN
ng2-components/ng2-alfresco-userinfo/src/img/anonymous.gif
Normal file
BIN
ng2-components/ng2-alfresco-userinfo/src/img/anonymous.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.7 KiB |
@ -0,0 +1,39 @@
|
|||||||
|
/*!
|
||||||
|
* @license
|
||||||
|
* Copyright 2016 Alfresco Software, Ltd.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
export class BpmUserModel {
|
||||||
|
apps: any;
|
||||||
|
capabilities: string;
|
||||||
|
company: string;
|
||||||
|
created: string;
|
||||||
|
email: string;
|
||||||
|
externalId: string;
|
||||||
|
firstName: string;
|
||||||
|
lastName: string;
|
||||||
|
fullname: string;
|
||||||
|
groups: any;
|
||||||
|
id: string;
|
||||||
|
lastUpdate: string;
|
||||||
|
latestSyncTimeStamp: string;
|
||||||
|
password: string;
|
||||||
|
pictureId: string;
|
||||||
|
status: string;
|
||||||
|
tenantId: string;
|
||||||
|
tenantName: string;
|
||||||
|
tenantPictureId: string;
|
||||||
|
type: string;
|
||||||
|
}
|
@ -0,0 +1,27 @@
|
|||||||
|
/*!
|
||||||
|
* @license
|
||||||
|
* Copyright 2016 Alfresco Software, Ltd.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
export class EcmCompanyModel {
|
||||||
|
organization: string;
|
||||||
|
address1: string;
|
||||||
|
address2: string;
|
||||||
|
address3: string;
|
||||||
|
postcode: string;
|
||||||
|
telephone: string;
|
||||||
|
fax: string;
|
||||||
|
email: string;
|
||||||
|
}
|
@ -0,0 +1,39 @@
|
|||||||
|
/*!
|
||||||
|
* @license
|
||||||
|
* Copyright 2016 Alfresco Software, Ltd.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { EcmCompanyModel } from './ecm-company.model';
|
||||||
|
|
||||||
|
export class EcmUserModel {
|
||||||
|
id: string;
|
||||||
|
firstName: string;
|
||||||
|
lastName: string;
|
||||||
|
description: string;
|
||||||
|
avatarId: string;
|
||||||
|
email: string;
|
||||||
|
skypeId: string;
|
||||||
|
googleId: string;
|
||||||
|
instantMessageId: string;
|
||||||
|
jobTitle: string;
|
||||||
|
location: string;
|
||||||
|
company: EcmCompanyModel;
|
||||||
|
mobile: string;
|
||||||
|
telephone: string;
|
||||||
|
statusUpdatedAt: string;
|
||||||
|
userStatus: string;
|
||||||
|
enabled: boolean;
|
||||||
|
emailNotificationsEnabled: boolean;
|
||||||
|
}
|
@ -0,0 +1,146 @@
|
|||||||
|
/*!
|
||||||
|
* @license
|
||||||
|
* Copyright 2016 Alfresco Software, Ltd.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { BpmUserService } from '../services/bpm-user.service';
|
||||||
|
import { AlfrescoAuthenticationService } from 'ng2-alfresco-core';
|
||||||
|
import { TestBed, async, inject } from '@angular/core/testing';
|
||||||
|
import { BpmUserModel } from '../models/bpm-user.model';
|
||||||
|
|
||||||
|
export var fakeBpmUser: BpmUserModel = {
|
||||||
|
apps: {},
|
||||||
|
capabilities: 'fake-capability',
|
||||||
|
company: 'fake-company',
|
||||||
|
created: 'fake-create-date',
|
||||||
|
email: 'fakeBpm@fake.com',
|
||||||
|
externalId: 'fake-external-id',
|
||||||
|
firstName: 'fake-first-name',
|
||||||
|
lastName: 'fake-last-name',
|
||||||
|
fullname: 'fake-full-name',
|
||||||
|
groups: {},
|
||||||
|
id: 'fake-id',
|
||||||
|
lastUpdate: 'fake-update-date',
|
||||||
|
latestSyncTimeStamp: 'fake-timestamp',
|
||||||
|
password: 'fake-password',
|
||||||
|
pictureId: 'fake-picture-id',
|
||||||
|
status: 'fake-status',
|
||||||
|
tenantId: 'fake-tenant-id',
|
||||||
|
tenantName: 'fake-tenant-name',
|
||||||
|
tenantPictureId: 'fake-tenant-picture-id',
|
||||||
|
type: 'fake-type'
|
||||||
|
};
|
||||||
|
|
||||||
|
class StubAuthentication {
|
||||||
|
isEcmConnected: boolean;
|
||||||
|
isBpmConnected: boolean;
|
||||||
|
setIsEcmLoggedIn(logged: boolean) { this.isEcmConnected = logged; };
|
||||||
|
setIsBpmLoggedIn(logged: boolean) { this.isBpmConnected = logged; };
|
||||||
|
isEcmLoggedIn() { return this.isEcmConnected; };
|
||||||
|
isBpmLoggedIn() { return this.isBpmConnected; };
|
||||||
|
callApiGetPersonInfo() { return Promise.resolve(fakeBpmUser); };
|
||||||
|
};
|
||||||
|
|
||||||
|
describe('Bpm User service', () => {
|
||||||
|
|
||||||
|
beforeEach( async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
providers: [ BpmUserService,
|
||||||
|
{ provide: AlfrescoAuthenticationService, useClass: StubAuthentication }
|
||||||
|
]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
it('can instantiate service when inject service',
|
||||||
|
inject([BpmUserService], (service: BpmUserService) => {
|
||||||
|
expect(service instanceof BpmUserService).toBe(true);
|
||||||
|
}));
|
||||||
|
|
||||||
|
it('can instantiate service with authorization', inject([AlfrescoAuthenticationService],
|
||||||
|
(auth: AlfrescoAuthenticationService) => {
|
||||||
|
expect(auth).not.toBeNull('authorization should be provided');
|
||||||
|
let service = new BpmUserService(auth);
|
||||||
|
expect(service instanceof BpmUserService).toBe(true, 'new service should be ok');
|
||||||
|
}));
|
||||||
|
|
||||||
|
describe('when user is logged in', () => {
|
||||||
|
let service: BpmUserService;
|
||||||
|
let authServiceForTest: AlfrescoAuthenticationService;
|
||||||
|
|
||||||
|
beforeEach(
|
||||||
|
inject(
|
||||||
|
[AlfrescoAuthenticationService ],
|
||||||
|
( authService: AlfrescoAuthenticationService ) => {
|
||||||
|
authServiceForTest = authService;
|
||||||
|
service = new BpmUserService(authService);
|
||||||
|
spyOn(authServiceForTest, 'isBpmLoggedIn').and.returnValue(true);
|
||||||
|
}));
|
||||||
|
|
||||||
|
it('should be able to retrieve current user info', (done) => {
|
||||||
|
spyOn(service, 'callApiGetProfile').and.returnValue(Promise.resolve(fakeBpmUser));
|
||||||
|
service.getCurrentUserInfo().subscribe(
|
||||||
|
(user) => {
|
||||||
|
expect(user).toBeDefined();
|
||||||
|
expect(user.firstName).toEqual('fake-first-name');
|
||||||
|
expect(user.lastName).toEqual('fake-last-name');
|
||||||
|
expect(user.email).toEqual('fakeBpm@fake.com');
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should retrieve current logged user information via js api', () => {
|
||||||
|
spyOn(service, 'callApiGetProfile');
|
||||||
|
service.getCurrentUserInfo();
|
||||||
|
expect(service.callApiGetProfile).toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should retrieve avatar url for current user', (done) => {
|
||||||
|
spyOn(service, 'callApiGetProfilePicture').and.returnValue(Promise.resolve('fake/img/path'));
|
||||||
|
service.getCurrentUserProfileImage().subscribe(
|
||||||
|
(path) => {
|
||||||
|
expect(path).toBeDefined();
|
||||||
|
expect(path).toEqual('fake/img/path');
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('when user is not logged in', () => {
|
||||||
|
let service: BpmUserService;
|
||||||
|
let authServiceForTest: AlfrescoAuthenticationService;
|
||||||
|
|
||||||
|
beforeEach(
|
||||||
|
inject(
|
||||||
|
[AlfrescoAuthenticationService],
|
||||||
|
(authService: AlfrescoAuthenticationService) => {
|
||||||
|
authServiceForTest = authService;
|
||||||
|
service = new BpmUserService(authService);
|
||||||
|
spyOn(authServiceForTest, 'isBpmLoggedIn').and.returnValue(false);
|
||||||
|
}));
|
||||||
|
|
||||||
|
it('should not retrieve the user information', () => {
|
||||||
|
spyOn(service, 'callApiGetProfile');
|
||||||
|
service.getCurrentUserInfo();
|
||||||
|
expect(service.callApiGetProfile).not.toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not retrieve the user avatar', () => {
|
||||||
|
spyOn(service, 'callApiGetProfilePicture');
|
||||||
|
service.getCurrentUserInfo();
|
||||||
|
expect(service.callApiGetProfilePicture).not.toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,91 @@
|
|||||||
|
/*!
|
||||||
|
* @license
|
||||||
|
* Copyright 2016 Alfresco Software, Ltd.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { AlfrescoAuthenticationService } from 'ng2-alfresco-core';
|
||||||
|
import { Injectable } from '@angular/core';
|
||||||
|
import { Response } from '@angular/http';
|
||||||
|
import { Observable } from 'rxjs/Rx';
|
||||||
|
import { BpmUserModel } from '../models/bpm-user.model';
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* BPMUserService retrieve all the information of an Ecm user.
|
||||||
|
*
|
||||||
|
* @returns {BPMUserService} .
|
||||||
|
*/
|
||||||
|
@Injectable()
|
||||||
|
export class BpmUserService {
|
||||||
|
|
||||||
|
constructor(private authService: AlfrescoAuthenticationService) {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get Current User information for BPM
|
||||||
|
* @param userName - the user name
|
||||||
|
*/
|
||||||
|
getCurrentUserInfo(): Observable<BpmUserModel> {
|
||||||
|
if ( this.authService.isBpmLoggedIn() ) {
|
||||||
|
return Observable.fromPromise(this.callApiGetProfile())
|
||||||
|
.map(
|
||||||
|
(data) => <BpmUserModel> data
|
||||||
|
)
|
||||||
|
.catch(this.handleError);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getCurrentUserProfileImage(): any {
|
||||||
|
if ( this.authService.isBpmLoggedIn() ) {
|
||||||
|
return Observable.fromPromise(this.callApiGetProfilePicture())
|
||||||
|
.map(
|
||||||
|
(data) => data
|
||||||
|
)
|
||||||
|
.catch(this.handleError);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Call js api to get current user profile picture
|
||||||
|
*/
|
||||||
|
callApiGetProfilePicture() {
|
||||||
|
try {
|
||||||
|
return this.authService.getAlfrescoApi().activiti.profileApi.getProfilePicture();
|
||||||
|
} catch (exc) {
|
||||||
|
console.error(exc);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Call js api to get current user information
|
||||||
|
*/
|
||||||
|
callApiGetProfile() {
|
||||||
|
return this.authService.getAlfrescoApi().activiti.profileApi.getProfile();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Throw the error
|
||||||
|
* @param error
|
||||||
|
* @returns {ErrorObservable}
|
||||||
|
*/
|
||||||
|
private handleError(error: Response) {
|
||||||
|
// in a real world app, we may send the error to some remote logging infrastructure
|
||||||
|
// instead of just logging it to the console
|
||||||
|
console.error(error);
|
||||||
|
return Observable.throw(error || 'Server error');
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,179 @@
|
|||||||
|
/*!
|
||||||
|
* @license
|
||||||
|
* Copyright 2016 Alfresco Software, Ltd.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { EcmUserService } from '../services/ecm-user.service';
|
||||||
|
import { AlfrescoAuthenticationService, AlfrescoContentService } from 'ng2-alfresco-core';
|
||||||
|
import { TestBed, async, inject } from '@angular/core/testing';
|
||||||
|
import { EcmUserModel } from '../models/ecm-user.model';
|
||||||
|
import { EcmCompanyModel } from '../models/ecm-company.model';
|
||||||
|
|
||||||
|
export var fakeEcmCompany: EcmCompanyModel = {
|
||||||
|
organization: 'company-fake-name',
|
||||||
|
address1: 'fake-address-1',
|
||||||
|
address2: 'fake-address-2',
|
||||||
|
address3: 'fake-address-3',
|
||||||
|
postcode: 'fAk1',
|
||||||
|
telephone: '00000000',
|
||||||
|
fax: '=1111111',
|
||||||
|
email: 'fakeCompany@fake.com'
|
||||||
|
};
|
||||||
|
|
||||||
|
export var fakeEcmUser: EcmUserModel = {
|
||||||
|
id: 'fake-id',
|
||||||
|
firstName: 'fake-first-name',
|
||||||
|
lastName: 'fake-last-name',
|
||||||
|
description: 'i am a fake user for test',
|
||||||
|
avatarId: 'fake-avatar-id',
|
||||||
|
email: 'fakeEcm@ecmUser.com',
|
||||||
|
skypeId: 'fake-skype-id',
|
||||||
|
googleId: 'fake-googleId-id',
|
||||||
|
instantMessageId: 'fake-instantMessageId-id',
|
||||||
|
company: fakeEcmCompany,
|
||||||
|
jobTitle: 'test job',
|
||||||
|
location: 'fake location',
|
||||||
|
mobile: '000000000',
|
||||||
|
telephone: '11111111',
|
||||||
|
statusUpdatedAt: 'fake-date',
|
||||||
|
userStatus: 'active',
|
||||||
|
enabled: true,
|
||||||
|
emailNotificationsEnabled: true
|
||||||
|
};
|
||||||
|
|
||||||
|
class StubAuthentication {
|
||||||
|
isEcmConnected: boolean;
|
||||||
|
isBpmConnected: boolean;
|
||||||
|
setIsEcmLoggedIn(logged: boolean) { this.isEcmConnected = logged; };
|
||||||
|
setIsBpmLoggedIn(logged: boolean) { this.isBpmConnected = logged; };
|
||||||
|
isEcmLoggedIn() { return this.isEcmConnected; };
|
||||||
|
isBpmLoggedIn() { return this.isBpmConnected; };
|
||||||
|
callApiGetPersonInfo() { return Promise.resolve(fakeEcmUser); };
|
||||||
|
};
|
||||||
|
|
||||||
|
class StubAlfrescoContentService {
|
||||||
|
getContentUrl() { return 'fake/url/image/for/ecm/user'; } ;
|
||||||
|
}
|
||||||
|
|
||||||
|
describe('Ecm User service', () => {
|
||||||
|
|
||||||
|
beforeEach( async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
providers: [ EcmUserService,
|
||||||
|
{ provide: AlfrescoAuthenticationService, useClass: StubAuthentication },
|
||||||
|
{ provide: AlfrescoContentService, useClass: StubAlfrescoContentService }
|
||||||
|
]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
it('can instantiate service when inject service',
|
||||||
|
inject([EcmUserService], (service: EcmUserService) => {
|
||||||
|
expect(service instanceof EcmUserService).toBe(true);
|
||||||
|
}));
|
||||||
|
|
||||||
|
it('can instantiate service with authorization', inject([AlfrescoAuthenticationService],
|
||||||
|
(auth: AlfrescoAuthenticationService) => {
|
||||||
|
expect(auth).not.toBeNull('authorization should be provided');
|
||||||
|
let service = new EcmUserService(auth, null);
|
||||||
|
expect(service instanceof EcmUserService).toBe(true, 'new service should be ok');
|
||||||
|
}));
|
||||||
|
|
||||||
|
it('can instantiate service with content service', inject([AlfrescoContentService],
|
||||||
|
(content: AlfrescoContentService) => {
|
||||||
|
expect(content).not.toBeNull('contentService should be provided');
|
||||||
|
let service = new EcmUserService(null, content);
|
||||||
|
expect(service instanceof EcmUserService).toBe(true, 'new service should be ok');
|
||||||
|
}));
|
||||||
|
|
||||||
|
describe('when user is logged in', () => {
|
||||||
|
let service: EcmUserService;
|
||||||
|
let authServiceForTest: AlfrescoAuthenticationService;
|
||||||
|
let contentServiceForTest: AlfrescoContentService;
|
||||||
|
|
||||||
|
beforeEach(
|
||||||
|
inject(
|
||||||
|
[AlfrescoAuthenticationService, AlfrescoContentService],
|
||||||
|
(authService: AlfrescoAuthenticationService, content: AlfrescoContentService) => {
|
||||||
|
authServiceForTest = authService;
|
||||||
|
contentServiceForTest = content;
|
||||||
|
service = new EcmUserService(authService, content);
|
||||||
|
spyOn(authServiceForTest, 'isEcmLoggedIn').and.returnValue(true);
|
||||||
|
}));
|
||||||
|
|
||||||
|
it('should be able to retrieve current user info', (done) => {
|
||||||
|
let userJsApiResponse = {entry: fakeEcmUser};
|
||||||
|
spyOn(service, 'callApiGetPersonInfo').and.returnValue(Promise.resolve(userJsApiResponse));
|
||||||
|
service.getCurrentUserInfo().subscribe(
|
||||||
|
(user) => {
|
||||||
|
expect(user).toBeDefined();
|
||||||
|
expect(user.firstName).toEqual('fake-first-name');
|
||||||
|
expect(user.lastName).toEqual('fake-last-name');
|
||||||
|
expect(user.email).toEqual('fakeEcm@ecmUser.com');
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should retrieve current logged user information', () => {
|
||||||
|
spyOn(service, 'getUserInfo');
|
||||||
|
spyOn(service, 'callApiGetPersonInfo').and.callThrough();
|
||||||
|
service.getCurrentUserInfo();
|
||||||
|
expect(service.getUserInfo).toHaveBeenCalledWith('-me-');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should retrieve avatar url for current user', () => {
|
||||||
|
spyOn(contentServiceForTest, 'getContentUrl').and.returnValue('fake/url/image/for/ecm/user');
|
||||||
|
let urlRs = service.getCurrentUserProfileImageUrl('fake-avatar-id');
|
||||||
|
|
||||||
|
expect(urlRs).toEqual('fake/url/image/for/ecm/user');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not call content service without avatar id', () => {
|
||||||
|
spyOn(contentServiceForTest, 'getContentUrl').and.callThrough();
|
||||||
|
let urlRs = service.getCurrentUserProfileImageUrl(undefined);
|
||||||
|
expect(urlRs).toBeUndefined();
|
||||||
|
expect(contentServiceForTest.getContentUrl).not.toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should build the body for the content service', () => {
|
||||||
|
spyOn(contentServiceForTest, 'getContentUrl').and.callThrough();
|
||||||
|
let urlRs = service.getCurrentUserProfileImageUrl('fake-avatar-id');
|
||||||
|
expect(urlRs).toBeDefined();
|
||||||
|
expect(contentServiceForTest.getContentUrl).toHaveBeenCalledWith( {entry: {id: 'fake-avatar-id'} });
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('when user is not logged in', () => {
|
||||||
|
let service: EcmUserService;
|
||||||
|
let authServiceForTest: AlfrescoAuthenticationService;
|
||||||
|
let contentServiceForTest: AlfrescoContentService;
|
||||||
|
|
||||||
|
beforeEach(
|
||||||
|
inject(
|
||||||
|
[AlfrescoAuthenticationService, AlfrescoContentService],
|
||||||
|
(authService: AlfrescoAuthenticationService, content: AlfrescoContentService) => {
|
||||||
|
authServiceForTest = authService;
|
||||||
|
contentServiceForTest = content;
|
||||||
|
service = new EcmUserService(authService, content);
|
||||||
|
spyOn(authServiceForTest, 'isEcmLoggedIn').and.returnValue(false);
|
||||||
|
}));
|
||||||
|
|
||||||
|
it('should not retrieve the user information', () => {
|
||||||
|
spyOn(service, 'callApiGetPersonInfo');
|
||||||
|
service.getCurrentUserInfo();
|
||||||
|
expect(service.callApiGetPersonInfo).not.toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,76 @@
|
|||||||
|
/*!
|
||||||
|
* @license
|
||||||
|
* Copyright 2016 Alfresco Software, Ltd.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { AlfrescoAuthenticationService, AlfrescoContentService } from 'ng2-alfresco-core';
|
||||||
|
import { Injectable } from '@angular/core';
|
||||||
|
import { Response } from '@angular/http';
|
||||||
|
import { Observable } from 'rxjs/Rx';
|
||||||
|
import { EcmUserModel } from '../models/ecm-user.model';
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* ECMUserService retrieve all the information of an Ecm user.
|
||||||
|
*
|
||||||
|
* @returns {ECMUserService} .
|
||||||
|
*/
|
||||||
|
@Injectable()
|
||||||
|
export class EcmUserService {
|
||||||
|
|
||||||
|
constructor(private authService: AlfrescoAuthenticationService,
|
||||||
|
private contentService: AlfrescoContentService) {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get User Information via ECM
|
||||||
|
* @param userName - the user name
|
||||||
|
*/
|
||||||
|
getUserInfo(userName: string): Observable<EcmUserModel> {
|
||||||
|
if ( this.authService.isEcmLoggedIn() ) {
|
||||||
|
return Observable.fromPromise(this.callApiGetPersonInfo(userName))
|
||||||
|
.map(
|
||||||
|
(data) => <EcmUserModel> data['entry']
|
||||||
|
)
|
||||||
|
.catch(this.handleError);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getCurrentUserInfo() {
|
||||||
|
return this.getUserInfo('-me-');
|
||||||
|
}
|
||||||
|
|
||||||
|
callApiGetPersonInfo(userName: string, opts?: any) {
|
||||||
|
return this.authService.getAlfrescoApi().core.peopleApi.getPerson(userName, opts);
|
||||||
|
}
|
||||||
|
|
||||||
|
getCurrentUserProfileImageUrl(avatarId: string) {
|
||||||
|
if ( avatarId ) {
|
||||||
|
let nodeObj = {entry: {id: avatarId}};
|
||||||
|
return this.contentService.getContentUrl(nodeObj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Throw the error
|
||||||
|
* @param error
|
||||||
|
* @returns {ErrorObservable}
|
||||||
|
*/
|
||||||
|
private handleError(error: Response) {
|
||||||
|
// in a real world app, we may send the error to some remote logging infrastructure
|
||||||
|
// instead of just logging it to the console
|
||||||
|
console.error(error);
|
||||||
|
return Observable.throw(error || 'Server error');
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,98 @@
|
|||||||
|
/*!
|
||||||
|
* @license
|
||||||
|
* Copyright 2016 Alfresco Software, Ltd.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// re-export for tester convenience
|
||||||
|
export { BpmUserModel } from '../models/bpm-user.model';
|
||||||
|
export { BpmUserService } from '../services/bpm-user.service';
|
||||||
|
|
||||||
|
import { BpmUserModel } from '../models/bpm-user.model';
|
||||||
|
import { Observable } from 'rxjs/Rx';
|
||||||
|
|
||||||
|
export var fakeBpmUserNoImage: BpmUserModel = {
|
||||||
|
apps: {},
|
||||||
|
capabilities: 'fake-capability',
|
||||||
|
company: 'fake-company',
|
||||||
|
created: 'fake-create-date',
|
||||||
|
email: 'fakeBpm@fake.com',
|
||||||
|
externalId: 'fake-external-id',
|
||||||
|
firstName: 'fake-first-name',
|
||||||
|
lastName: 'fake-last-name',
|
||||||
|
fullname: 'fake-full-name',
|
||||||
|
groups: {},
|
||||||
|
id: 'fake-id',
|
||||||
|
lastUpdate: 'fake-update-date',
|
||||||
|
latestSyncTimeStamp: 'fake-timestamp',
|
||||||
|
password: 'fake-password',
|
||||||
|
pictureId: undefined,
|
||||||
|
status: 'fake-status',
|
||||||
|
tenantId: 'fake-tenant-id',
|
||||||
|
tenantName: 'fake-tenant-name',
|
||||||
|
tenantPictureId: 'fake-tenant-picture-id',
|
||||||
|
type: 'fake-type'
|
||||||
|
};
|
||||||
|
|
||||||
|
export var fakeBpmUser: BpmUserModel = {
|
||||||
|
apps: {},
|
||||||
|
capabilities: 'fake-capability',
|
||||||
|
company: 'fake-company',
|
||||||
|
created: 'fake-create-date',
|
||||||
|
email: 'fakeBpm@fake.com',
|
||||||
|
externalId: 'fake-external-id',
|
||||||
|
firstName: 'fake-first-name',
|
||||||
|
lastName: 'fake-last-name',
|
||||||
|
fullname: 'fake-full-name',
|
||||||
|
groups: {},
|
||||||
|
id: 'fake-id',
|
||||||
|
lastUpdate: 'fake-update-date',
|
||||||
|
latestSyncTimeStamp: 'fake-timestamp',
|
||||||
|
password: 'fake-password',
|
||||||
|
pictureId: 'fake-picture-id',
|
||||||
|
status: 'fake-status',
|
||||||
|
tenantId: 'fake-tenant-id',
|
||||||
|
tenantName: 'fake-tenant-name',
|
||||||
|
tenantPictureId: 'fake-tenant-picture-id',
|
||||||
|
type: 'fake-type'
|
||||||
|
};
|
||||||
|
|
||||||
|
export class FakeBpmUserService {
|
||||||
|
|
||||||
|
lastPromise: Observable<BpmUserModel>;
|
||||||
|
public userNeeded = 0;
|
||||||
|
usersList = [fakeBpmUser, fakeBpmUserNoImage];
|
||||||
|
|
||||||
|
getUserInfo(userName: string) {
|
||||||
|
return this.lastPromise = Observable.of(this.usersList[this.userNeeded]);
|
||||||
|
};
|
||||||
|
|
||||||
|
getCurrentUserInfo() {
|
||||||
|
return this.getUserInfo('fake-id');
|
||||||
|
};
|
||||||
|
|
||||||
|
getCurrentUserProfileImage() {
|
||||||
|
return this.usersList[this.userNeeded].pictureId;
|
||||||
|
};
|
||||||
|
|
||||||
|
respondWithTheUserWithoutImage() {
|
||||||
|
this.userNeeded = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
respondWithTheUserWithImage() {
|
||||||
|
this.userNeeded = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,107 @@
|
|||||||
|
/*!
|
||||||
|
* @license
|
||||||
|
* Copyright 2016 Alfresco Software, Ltd.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// re-export for tester convenience
|
||||||
|
export { EcmUserModel } from '../models/ecm-user.model';
|
||||||
|
export { EcmUserService } from '../services/ecm-user.service';
|
||||||
|
|
||||||
|
import { EcmUserModel } from '../models/ecm-user.model';
|
||||||
|
import { EcmCompanyModel } from '../models/ecm-company.model';
|
||||||
|
import { Observable } from 'rxjs/Rx';
|
||||||
|
|
||||||
|
export var fakeEcmCompany: EcmCompanyModel = {
|
||||||
|
organization: 'company-fake-name',
|
||||||
|
address1: 'fake-address-1',
|
||||||
|
address2: 'fake-address-2',
|
||||||
|
address3: 'fake-address-3',
|
||||||
|
postcode: 'fAk1',
|
||||||
|
telephone: '00000000',
|
||||||
|
fax: '11111111',
|
||||||
|
email: 'fakeCompany@fake.com'
|
||||||
|
};
|
||||||
|
|
||||||
|
export var fakeEcmUserNoImage: EcmUserModel = {
|
||||||
|
id: 'fake-id',
|
||||||
|
firstName: 'fake-first-name',
|
||||||
|
lastName: 'fake-last-name',
|
||||||
|
description: 'i am a fake user for test',
|
||||||
|
avatarId: undefined,
|
||||||
|
email: 'fakeEcm@ecmUser.com',
|
||||||
|
skypeId: 'fake-skype-id',
|
||||||
|
googleId: 'fake-googleId-id',
|
||||||
|
instantMessageId: 'fake-instantMessageId-id',
|
||||||
|
company: fakeEcmCompany,
|
||||||
|
jobTitle: 'test job',
|
||||||
|
location: 'fake location',
|
||||||
|
mobile: '000000000',
|
||||||
|
telephone: '11111111',
|
||||||
|
statusUpdatedAt: 'fake-date',
|
||||||
|
userStatus: 'active',
|
||||||
|
enabled: true,
|
||||||
|
emailNotificationsEnabled: true
|
||||||
|
};
|
||||||
|
|
||||||
|
export var fakeEcmUser: EcmUserModel = {
|
||||||
|
id: 'fake-id',
|
||||||
|
firstName: 'fake-first-name',
|
||||||
|
lastName: 'fake-last-name',
|
||||||
|
description: 'i am a fake user for test',
|
||||||
|
avatarId: 'fake-avatar-id',
|
||||||
|
email: 'fakeEcm@ecmUser.com',
|
||||||
|
skypeId: 'fake-skype-id',
|
||||||
|
googleId: 'fake-googleId-id',
|
||||||
|
instantMessageId: 'fake-instantMessageId-id',
|
||||||
|
company: fakeEcmCompany,
|
||||||
|
jobTitle: 'test job',
|
||||||
|
location: 'fake location',
|
||||||
|
mobile: '000000000',
|
||||||
|
telephone: '11111111',
|
||||||
|
statusUpdatedAt: 'fake-date',
|
||||||
|
userStatus: 'active',
|
||||||
|
enabled: true,
|
||||||
|
emailNotificationsEnabled: true
|
||||||
|
};
|
||||||
|
|
||||||
|
export class FakeEcmUserService {
|
||||||
|
|
||||||
|
lastPromise: Observable<EcmUserModel>;
|
||||||
|
public userNeeded = 0;
|
||||||
|
usersList = [fakeEcmUser, fakeEcmUserNoImage];
|
||||||
|
|
||||||
|
getUserInfo(userName: string) {
|
||||||
|
return this.lastPromise = Observable.of(this.usersList[this.userNeeded]);
|
||||||
|
};
|
||||||
|
|
||||||
|
getCurrentUserInfo() {
|
||||||
|
return this.getUserInfo('fake-id');
|
||||||
|
};
|
||||||
|
|
||||||
|
getCurrentUserProfileImageUrl(avatarId: string) {
|
||||||
|
if ( avatarId ) {
|
||||||
|
return 'fake/url/image/for/ecm/user';
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
respondWithTheUserWithoutImage() {
|
||||||
|
this.userNeeded = 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
respondWithTheUserWithImage() {
|
||||||
|
this.userNeeded = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
26
ng2-components/ng2-alfresco-userinfo/tsconfig.json
Normal file
26
ng2-components/ng2-alfresco-userinfo/tsconfig.json
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"target": "es5",
|
||||||
|
"module": "system",
|
||||||
|
"moduleResolution": "node",
|
||||||
|
"emitDecoratorMetadata": true,
|
||||||
|
"experimentalDecorators": true,
|
||||||
|
"sourceMap": true,
|
||||||
|
"removeComments": true,
|
||||||
|
"declaration": true,
|
||||||
|
"noLib": false,
|
||||||
|
"allowUnreachableCode": false,
|
||||||
|
"allowUnusedLabels": false,
|
||||||
|
"noImplicitAny": false,
|
||||||
|
"noImplicitReturns": false,
|
||||||
|
"noImplicitUseStrict": false,
|
||||||
|
"noFallthroughCasesInSwitch": true,
|
||||||
|
"outDir": "dist",
|
||||||
|
"types": ["core-js", "jasmine"]
|
||||||
|
},
|
||||||
|
"exclude": [
|
||||||
|
"demo",
|
||||||
|
"node_modules",
|
||||||
|
"dist"
|
||||||
|
]
|
||||||
|
}
|
121
ng2-components/ng2-alfresco-userinfo/tslint.json
Normal file
121
ng2-components/ng2-alfresco-userinfo/tslint.json
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
{
|
||||||
|
"rules": {
|
||||||
|
"align": [
|
||||||
|
true,
|
||||||
|
"parameters",
|
||||||
|
"statements"
|
||||||
|
],
|
||||||
|
"ban": false,
|
||||||
|
"class-name": true,
|
||||||
|
"comment-format": [
|
||||||
|
true,
|
||||||
|
"check-space"
|
||||||
|
],
|
||||||
|
"curly": true,
|
||||||
|
"eofline": true,
|
||||||
|
"forin": true,
|
||||||
|
"indent": [
|
||||||
|
true,
|
||||||
|
"spaces"
|
||||||
|
],
|
||||||
|
"interface-name": false,
|
||||||
|
"jsdoc-format": true,
|
||||||
|
"label-position": true,
|
||||||
|
"label-undefined": true,
|
||||||
|
"max-line-length": [
|
||||||
|
true,
|
||||||
|
180
|
||||||
|
],
|
||||||
|
"member-ordering": [
|
||||||
|
true,
|
||||||
|
"static-before-instance",
|
||||||
|
"variables-before-functions"
|
||||||
|
],
|
||||||
|
"no-any": false,
|
||||||
|
"no-arg": true,
|
||||||
|
"no-bitwise": false,
|
||||||
|
"no-conditional-assignment": true,
|
||||||
|
"no-consecutive-blank-lines": false,
|
||||||
|
"no-console": [
|
||||||
|
true,
|
||||||
|
"debug",
|
||||||
|
"info",
|
||||||
|
"time",
|
||||||
|
"timeEnd",
|
||||||
|
"trace"
|
||||||
|
],
|
||||||
|
"no-construct": true,
|
||||||
|
"no-constructor-vars": false,
|
||||||
|
"no-debugger": true,
|
||||||
|
"no-duplicate-key": true,
|
||||||
|
"no-duplicate-variable": true,
|
||||||
|
"no-empty": false,
|
||||||
|
"no-eval": true,
|
||||||
|
"no-inferrable-types": false,
|
||||||
|
"no-internal-module": true,
|
||||||
|
"no-require-imports": true,
|
||||||
|
"no-shadowed-variable": true,
|
||||||
|
"no-switch-case-fall-through": true,
|
||||||
|
"no-trailing-whitespace": true,
|
||||||
|
"no-unreachable": true,
|
||||||
|
"no-unused-expression": true,
|
||||||
|
"no-unused-variable": true,
|
||||||
|
"no-use-before-declare": true,
|
||||||
|
"no-var-keyword": true,
|
||||||
|
"no-var-requires": true,
|
||||||
|
"object-literal-sort-keys": false,
|
||||||
|
"one-line": [
|
||||||
|
true,
|
||||||
|
"check-open-brace",
|
||||||
|
"check-catch",
|
||||||
|
"check-else",
|
||||||
|
"check-whitespace"
|
||||||
|
],
|
||||||
|
"quotemark": [
|
||||||
|
true,
|
||||||
|
"single",
|
||||||
|
"avoid-escape"
|
||||||
|
],
|
||||||
|
"radix": true,
|
||||||
|
"semicolon": true,
|
||||||
|
"switch-default": true,
|
||||||
|
"trailing-comma": [
|
||||||
|
true,
|
||||||
|
{
|
||||||
|
"multiline": "never",
|
||||||
|
"singleline": "never"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"triple-equals": [
|
||||||
|
true,
|
||||||
|
"allow-null-check"
|
||||||
|
],
|
||||||
|
"typedef": false,
|
||||||
|
"typedef-whitespace": [
|
||||||
|
true,
|
||||||
|
{
|
||||||
|
"call-signature": "nospace",
|
||||||
|
"index-signature": "nospace",
|
||||||
|
"parameter": "nospace",
|
||||||
|
"property-declaration": "nospace",
|
||||||
|
"variable-declaration": "nospace"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"use-strict": false,
|
||||||
|
"variable-name": [
|
||||||
|
true,
|
||||||
|
"check-format",
|
||||||
|
"allow-leading-underscore",
|
||||||
|
"ban-keywords"
|
||||||
|
],
|
||||||
|
"whitespace": [
|
||||||
|
true,
|
||||||
|
"check-branch",
|
||||||
|
"check-operator",
|
||||||
|
"check-separator",
|
||||||
|
"check-type",
|
||||||
|
"check-module",
|
||||||
|
"check-decl"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
@ -34,3 +34,6 @@
|
|||||||
|
|
||||||
(cd ng2-alfresco-tag; npm update;)
|
(cd ng2-alfresco-tag; npm update;)
|
||||||
(cd ng2-alfresco-tag/demo; npm update;)
|
(cd ng2-alfresco-tag/demo; npm update;)
|
||||||
|
|
||||||
|
(cd ng2-alfresco-userinfo; npm update;)
|
||||||
|
(cd ng2-alfresco-userinfo/demo; npm update;)
|
||||||
|
@ -22,6 +22,7 @@ for PACKAGE in \
|
|||||||
ng2-alfresco-search \
|
ng2-alfresco-search \
|
||||||
ng2-alfresco-tag \
|
ng2-alfresco-tag \
|
||||||
ng2-alfresco-upload \
|
ng2-alfresco-upload \
|
||||||
|
ng2-alfresco-userinfo \
|
||||||
ng2-alfresco-viewer \
|
ng2-alfresco-viewer \
|
||||||
ng2-alfresco-webscript
|
ng2-alfresco-webscript
|
||||||
do
|
do
|
||||||
|
@ -19,7 +19,8 @@ for PACKAGE in \
|
|||||||
ng2-alfresco-tag \
|
ng2-alfresco-tag \
|
||||||
ng2-alfresco-upload \
|
ng2-alfresco-upload \
|
||||||
ng2-alfresco-viewer \
|
ng2-alfresco-viewer \
|
||||||
ng2-alfresco-webscript
|
ng2-alfresco-webscript \
|
||||||
|
ng2-alfresco-userinfo
|
||||||
do
|
do
|
||||||
echo "====== Check component: ${PACKAGE} ====="
|
echo "====== Check component: ${PACKAGE} ====="
|
||||||
cd "$DIR/../ng2-components/${PACKAGE}"
|
cd "$DIR/../ng2-components/${PACKAGE}"
|
||||||
|
@ -15,7 +15,8 @@ for PACKAGE in \
|
|||||||
ng2-alfresco-tag \
|
ng2-alfresco-tag \
|
||||||
ng2-alfresco-upload \
|
ng2-alfresco-upload \
|
||||||
ng2-alfresco-viewer \
|
ng2-alfresco-viewer \
|
||||||
ng2-alfresco-webscript
|
ng2-alfresco-webscript \
|
||||||
|
ng2-alfresco-userinfo
|
||||||
do
|
do
|
||||||
echo "====== clean component: ${PACKAGE} ====="
|
echo "====== clean component: ${PACKAGE} ====="
|
||||||
cd "$DIR/../ng2-components/${PACKAGE}"
|
cd "$DIR/../ng2-components/${PACKAGE}"
|
||||||
|
@ -75,7 +75,8 @@ for PACKAGE in \
|
|||||||
ng2-alfresco-login \
|
ng2-alfresco-login \
|
||||||
ng2-alfresco-search \
|
ng2-alfresco-search \
|
||||||
ng2-alfresco-upload \
|
ng2-alfresco-upload \
|
||||||
ng2-activiti-analytics
|
ng2-activiti-analytics \
|
||||||
|
ng2-alfresco-userinfo
|
||||||
do
|
do
|
||||||
DESTDIR="$DIR/../ng2-components/${PACKAGE}"
|
DESTDIR="$DIR/../ng2-components/${PACKAGE}"
|
||||||
echo "====== linking component: ${PACKAGE} ====="
|
echo "====== linking component: ${PACKAGE} ====="
|
||||||
@ -102,6 +103,7 @@ for PACKAGE in \
|
|||||||
ng2-alfresco-upload \
|
ng2-alfresco-upload \
|
||||||
ng2-alfresco-viewer \
|
ng2-alfresco-viewer \
|
||||||
ng2-alfresco-webscript \
|
ng2-alfresco-webscript \
|
||||||
|
ng2-alfresco-userinfo
|
||||||
do
|
do
|
||||||
DESTDIR="$DIR/../ng2-components/${PACKAGE}"
|
DESTDIR="$DIR/../ng2-components/${PACKAGE}"
|
||||||
echo "====== demo shell linking: ${PACKAGE} ====="
|
echo "====== demo shell linking: ${PACKAGE} ====="
|
||||||
|
@ -17,7 +17,8 @@ for PACKAGE in \
|
|||||||
ng2-alfresco-tag \
|
ng2-alfresco-tag \
|
||||||
ng2-alfresco-upload \
|
ng2-alfresco-upload \
|
||||||
ng2-alfresco-viewer \
|
ng2-alfresco-viewer \
|
||||||
ng2-alfresco-webscript
|
ng2-alfresco-webscript \
|
||||||
|
ng2-alfresco-userinfo
|
||||||
do
|
do
|
||||||
DESTDIR="$DIR/../ng2-components/${PACKAGE}"
|
DESTDIR="$DIR/../ng2-components/${PACKAGE}"
|
||||||
echo "====== PUBLISHING: ${DESTDIR} ====="
|
echo "====== PUBLISHING: ${DESTDIR} ====="
|
||||||
|
@ -27,7 +27,8 @@ for PACKAGE in \
|
|||||||
ng2-alfresco-tag \
|
ng2-alfresco-tag \
|
||||||
ng2-alfresco-upload \
|
ng2-alfresco-upload \
|
||||||
ng2-alfresco-viewer \
|
ng2-alfresco-viewer \
|
||||||
ng2-alfresco-webscript
|
ng2-alfresco-webscript \
|
||||||
|
ng2-alfresco-userinfo
|
||||||
do
|
do
|
||||||
DESTDIR="$DIR/../ng2-components/${PACKAGE}"
|
DESTDIR="$DIR/../ng2-components/${PACKAGE}"
|
||||||
echo "====== UPDATE VERSION of ${PACKAGE} to ${VERSION} version in all the package.json ======"
|
echo "====== UPDATE VERSION of ${PACKAGE} to ${VERSION} version in all the package.json ======"
|
||||||
@ -47,7 +48,8 @@ for PACKAGE in \
|
|||||||
ng2-alfresco-tag \
|
ng2-alfresco-tag \
|
||||||
ng2-alfresco-upload \
|
ng2-alfresco-upload \
|
||||||
ng2-alfresco-viewer \
|
ng2-alfresco-viewer \
|
||||||
ng2-alfresco-webscript
|
ng2-alfresco-webscript \
|
||||||
|
ng2-alfresco-userinfo
|
||||||
do
|
do
|
||||||
DESTDIR="$DIR/../ng2-components/${PACKAGE}"
|
DESTDIR="$DIR/../ng2-components/${PACKAGE}"
|
||||||
echo "====== UPDATE VERSION OF ${PACKAGE} to ${VERSION} version ======"
|
echo "====== UPDATE VERSION OF ${PACKAGE} to ${VERSION} version ======"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user