diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 90f2fe1..13e134f 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -5,10 +5,11 @@ import {EnvProperties} from './openaireLibrary/utils/properties/env-properties'; import {MenuItem, RootMenuItem} from './openaireLibrary/sharedComponents/menu'; import {EnvironmentSpecificService} from './openaireLibrary/utils/properties/environment-specific.service'; import {CommunitiesService} from "./openaireLibrary/connect/communities/communities.service"; -import {Session} from './openaireLibrary/login/utils/helper.class'; +import {Session, User} from './openaireLibrary/login/utils/helper.class'; import {ConnectHelper} from './openaireLibrary/connect/connectHelper'; import {SubscribeService} from './openaireLibrary/utils/subscribe/subscribe.service'; import {HelperFunctions} from "./openaireLibrary/utils/HelperFunctions.class"; +import {UserManagementService} from "./openaireLibrary/services/user-management.service"; @Component({ //changeDetection: ChangeDetectionStrategy.Default, @@ -18,11 +19,11 @@ import {HelperFunctions} from "./openaireLibrary/utils/HelperFunctions.class"; `], template: `
- - @@ -66,11 +67,13 @@ export class AppComponent { communities = null; subscriberOfCommunities = false; managerOfCommunities = false; + user: User; + loginCheck: boolean = false; // community: {id:string, name:string, logoUrl:string}; constructor(private route: ActivatedRoute, private propertiesService: EnvironmentSpecificService, private _communitiesService: CommunitiesService, private _subscribeService: SubscribeService, - private router: Router) { + private router: Router, private userManagementService: UserManagementService) { router.events.forEach((event) => { if (event instanceof NavigationStart) { HelperFunctions.scroll(); @@ -84,28 +87,32 @@ export class AppComponent { this.properties = this.propertiesService.envSpecific; var communityId: string = ""; this._communitiesService.updateCommunities(this.properties, this.properties.communitiesAPI); - if (this.properties.environment == "development") { - this.showMenu = false; - this.route.queryParams.subscribe(params => { - communityId = (params['communityId']) ? params['communityId'] : ''; + this.userManagementService.getUserInfo(this.properties.userInfoUrl).subscribe( user => { + this.user = user; + this.loginCheck = true; + if (this.properties.environment == "development") { + this.showMenu = false; + this.route.queryParams.subscribe(params => { + communityId = (params['communityId']) ? params['communityId'] : ''; + this.buildMenu(communityId); + }) + } else { + this.showMenu = false; + communityId = ConnectHelper.getCommunityFromDomain(this.properties.domain); this.buildMenu(communityId); - }) - } else { - this.showMenu = false; - communityId = ConnectHelper.getCommunityFromDomain(this.properties.domain); - this.buildMenu(communityId); - } - if (typeof document !== 'undefined') { - try { - this.isClient = true; - } catch (e) { } - } - }, error => { - console.log("App couldn't fetch properties"); - console.log(error); + if (typeof document !== 'undefined') { + try { + this.isClient = true; + } catch (e) { + } + } + }, error => { + console.log("App couldn't fetch properties"); + console.log(error); - }); + }); + }); } public buildMenu(communityId: string) { @@ -125,10 +132,10 @@ export class AppComponent { this.managerOfCommunities && this.subscriberOfCommunities)) { break; } - if (Session.isLoggedIn() && com['status'] != "hidden") { - if (Session.isCommunityCurator() || Session.isPortalAdministrator()) { + if (this.user && com['status'] != "hidden") { + if (Session.isCommunityCurator(this.user) || Session.isPortalAdministrator(this.user)) { this.managerOfCommunities = true; - } else if (com.managers.indexOf(Session.getUserEmail()) != -1) { + } else if (com.managers.indexOf(this.user.email) != -1) { this.managerOfCommunities = true; } } @@ -137,9 +144,9 @@ export class AppComponent { if (communityId && communityId != "" && com.communityId == communityId) { community = com; let isCommunityManager: boolean = false; - if (Session.isCommunityCurator() || Session.isPortalAdministrator()) { + if (Session.isCommunityCurator(this.user) || Session.isPortalAdministrator(this.user)) { isCommunityManager = true; - } else if (com.managers.indexOf(Session.getUserEmail()) != -1) { + } else if (com.managers.indexOf(this.user.email) != -1) { isCommunityManager = true; } this.community = { @@ -238,7 +245,7 @@ export class AppComponent { this.userMenuItems = [ // new MenuItem("","My links","","/myclaims",false,[],["/myclaims"],(data['communityId'] && typeof document !== 'undefined' && ConnectHelper.isProduction(document.location.hostname))?{}:{communityId:data['communityId']}), ]; - if (Session.isPortalAdministrator()) { + if (Session.isPortalAdministrator(this.user)) { //((this.properties.environment == "beta") ? "https://beta.admin.connect.openaire.eu" : "https://admin.explore.openaire.eu") + "/dashboard?communityId=openaire" this.userMenuItems.push(new MenuItem("", "Manage Helptexts", ((this.properties.environment == "production") ? "https://admin.explore.openaire.eu" : "https://beta.admin.connect.openaire.eu") + "/dashboard?communityId=connect", @@ -258,7 +265,7 @@ export class AppComponent { console.error("Error fetching your subscribed communities") }); }*/ - if (Session.isLoggedIn()) { + if (this.user) { this.userMenuItems.push(new MenuItem("my-communities", "My Communities", "", "/myCommunities", false, [], [], {})); } diff --git a/src/app/claims/myClaims/myClaims.component.ts b/src/app/claims/myClaims/myClaims.component.ts index 3e6d4ba..8bcd4a2 100644 --- a/src/app/claims/myClaims/myClaims.component.ts +++ b/src/app/claims/myClaims/myClaims.component.ts @@ -8,12 +8,13 @@ import {PiwikHelper} from "../../utils/piwikHelper"; @Component({ selector: 'openaire-my-claims', template: ` - + ` }) export class OpenaireMyClaimsComponent { claimsInfoURL:string; + userInfoURL: string; communityId:string; public piwikSiteId = null; @@ -23,6 +24,7 @@ import {PiwikHelper} from "../../utils/piwikHelper"; this.route.data .subscribe((data: { envSpecific: EnvProperties }) => { this.claimsInfoURL = data.envSpecific.claimsInformationLink; + this.userInfoURL = data.envSpecific.userInfoUrl; this.route.queryParams.subscribe( communityId => { this.communityId = ConnectHelper.getCommunityFromDomain(data.envSpecific.domain); diff --git a/src/app/community/community.component.ts b/src/app/community/community.component.ts index 3be6689..4421c88 100644 --- a/src/app/community/community.component.ts +++ b/src/app/community/community.component.ts @@ -9,7 +9,7 @@ import {ConfigurationService} from '../openaireLibrary/utils/configuration/confi import {PiwikService} from '../openaireLibrary/utils/piwik/piwik.service'; import {SearchZenodoCommunitiesService} from '../openaireLibrary/connect/zenodoCommunities/searchZenodoCommunities.service'; import {ZenodoCommunitiesService} from '../openaireLibrary/connect/zenodoCommunities/zenodo-communities.service'; -import {Session} from '../openaireLibrary/login/utils/helper.class'; +import {Session, User} from '../openaireLibrary/login/utils/helper.class'; import {StatisticsForDashboardComponent} from '../statistics/statistics.component'; import {StringUtils} from '../openaireLibrary/utils/string-utils.class'; @@ -20,6 +20,7 @@ import {SearchCommunityProjectsService} from "../openaireLibrary/connect/project import {SearchResearchResultsService} from "../openaireLibrary/services/searchResearchResults.service"; import {RouterHelper} from "../openaireLibrary/utils/routerHelper.class"; import {SEOService} from "../openaireLibrary/sharedComponents/SEO/SEO.service"; +import {UserManagementService} from "../openaireLibrary/services/user-management.service"; @Component({ selector: 'community', @@ -77,6 +78,8 @@ export class CommunityComponent { searchLinkToAdvancedPublications: string = null; shareInZenodoPage: string = null; public routerHelper:RouterHelper = new RouterHelper(); + private user: User; + private loginCheck: boolean = false; constructor( private element: ElementRef, @@ -93,7 +96,8 @@ export class CommunityComponent { private _searchResearchResultsService: SearchResearchResultsService, private _searchZenodoCommunitiesService: SearchZenodoCommunitiesService, private _ΖenodoCommunitieService: ZenodoCommunitiesService, - private seoService: SEOService) { + private seoService: SEOService, + private userManagementService: UserManagementService) { var description = "OpenAIRE - Connect, Community Dashboard, research community"; var title = "OpenAIRE - Connect"; @@ -119,7 +123,10 @@ export class CommunityComponent { this.url = data.envSpecific.baseLink + this._router.url; this.seoService.createLinkForCanonicalURL(this.url, false); this._meta.updateTag({content: this.url}, "property='og:url'"); - + this.userManagementService.getUserInfo(this.properties.userInfoUrl).subscribe( user => { + this.user = user; + this.loginCheck = true; + }) if (this.communityId != null && this.communityId != '') { this._communityService.getCommunity(this.properties, this.properties.communityAPI + this.communityId).subscribe( community => { @@ -327,19 +334,19 @@ export class CommunityComponent { } showInvite() { - - - return this.isManager(); + return this.loginCheck && this.isManager(); } isManager() { - var email = Session.getUserEmail(); + if(!this.user) { + return false; + } + var email = this.user.email; var index = -1; if (email && this.community != null && this.community.managers != null) { index = this.community.managers.indexOf(email); } - - return Session.isPortalAdministrator() || Session.isCommunityCurator() || index != -1; + return Session.isPortalAdministrator(this.user) || Session.isCommunityCurator(this.user) || index != -1; } private handleError(message: string, error) { diff --git a/src/app/login/user.component.ts b/src/app/login/user.component.ts index 360e770..8de235d 100644 --- a/src/app/login/user.component.ts +++ b/src/app/login/user.component.ts @@ -11,6 +11,7 @@ import {Session} from '../openaireLibrary/login/utils/helper.class'; import {EnvProperties} from '../openaireLibrary/utils/properties/env-properties'; import {SubscribeComponent} from '../utils/subscribe/subscribe.component'; import {ConnectHelper} from '../openaireLibrary/connect/connectHelper'; +import {UserManagementService} from "../openaireLibrary/services/user-management.service"; @Component({ selector: 'openaire-user', @@ -53,14 +54,17 @@ export class OpenaireUserComponent { public server: boolean = true; loggedIn:boolean = false; constructor(private _subscribeService: SubscribeService, - private _emailService: EmailService, private route: ActivatedRoute){} + private _emailService: EmailService, private route: ActivatedRoute, + private userManagementService: UserManagementService){} public ngOnInit() { - if( typeof document !== 'undefined') { - this.server = false; - this.loggedIn = Session.isLoggedIn(); - } this.route.data .subscribe((data: { envSpecific: any }) => { + this.userManagementService.isLoggedIn(data.envSpecific.userInfoUrl).subscribe( isLoggedIn => { + if( typeof document !== 'undefined') { + this.server = false; + this.loggedIn = isLoggedIn; + } + }); this.route.queryParams.subscribe( communityId => { this.communityId = ConnectHelper.getCommunityFromDomain(data.envSpecific.domain); diff --git a/src/app/my-communities/my-communities.component.ts b/src/app/my-communities/my-communities.component.ts index f4bcbc6..0bd1af8 100644 --- a/src/app/my-communities/my-communities.component.ts +++ b/src/app/my-communities/my-communities.component.ts @@ -7,13 +7,14 @@ import {SubscribeService} from '../openaireLibrary/utils/subscribe/subscribe.ser import {CommunityInfo} from '../openaireLibrary/connect/community/communityInfo'; import {PiwikService} from '../openaireLibrary/utils/piwik/piwik.service'; -import {Session} from '../openaireLibrary/login/utils/helper.class'; +import {Session, User} from '../openaireLibrary/login/utils/helper.class'; import {StringUtils} from '../openaireLibrary/utils/string-utils.class'; import {ErrorCodes} from '../openaireLibrary/utils/properties/errorCodes'; import {ErrorMessagesComponent} from '../openaireLibrary/utils/errorMessages.component'; import {HelperService} from "../openaireLibrary/utils/helper/helper.service"; import {SEOService} from "../openaireLibrary/sharedComponents/SEO/SEO.service"; +import {UserManagementService} from "../openaireLibrary/services/user-management.service"; @Component({ selector: 'my-communities', @@ -37,6 +38,7 @@ export class MyCommunitiesComponent { private errorMessages: ErrorMessagesComponent; properties: EnvProperties; + private user: User; constructor( private route: ActivatedRoute, @@ -47,7 +49,8 @@ export class MyCommunitiesComponent { private _communitiesService: CommunitiesService, private _subscribeService: SubscribeService, private helper: HelperService, - private seoService: SEOService) { + private seoService: SEOService, + private userManagementService: UserManagementService) { var description = "OpenAIRE - Connect, Community Dashboard, research community " + "| My managing and subscribed to Communities"; @@ -73,9 +76,12 @@ export class MyCommunitiesComponent { if (this.properties.enablePiwikTrack && (typeof document !== 'undefined')) { this.piwiksub = this._piwikService.trackView(this.properties, "OpenAIRE Connect", this.properties.piwikSiteId).subscribe(); } - this.getCommunities(); - //this.getDivContents(); - //this.getPageContents(); + this.userManagementService.getUserInfo(this.properties.userInfoUrl).subscribe(user => { + this.user = user; + this.getCommunities(); + //this.getDivContents(); + //this.getPageContents(); + }); }); } @@ -112,7 +118,7 @@ export class MyCommunitiesComponent { this.sort(communitiesResults); var subscribedLoading = communitiesResults.length; - var mail = Session.getUserEmail(); + var mail = this.user.email; communitiesResults.forEach((community, index) => { let showCommunity: boolean = true; let isManager: boolean = false; @@ -123,7 +129,7 @@ export class MyCommunitiesComponent { } else { if (mail == null && community['status'] == "manager") { // no user showCommunity = false; - } else if (Session.isCommunityCurator() || Session.isPortalAdministrator()) { + } else if (Session.isCommunityCurator(this.user) || Session.isPortalAdministrator(this.user)) { isManager = true; } else if (community.managers.indexOf(mail) != -1) { isManager = true; diff --git a/src/app/searchPages/communities/searchCommunities.component.ts b/src/app/searchPages/communities/searchCommunities.component.ts index 8bbd2ec..c8f6ee9 100644 --- a/src/app/searchPages/communities/searchCommunities.component.ts +++ b/src/app/searchPages/communities/searchCommunities.component.ts @@ -8,11 +8,13 @@ import {ActivatedRoute} from "@angular/router"; import {Filter, Value} from "../../openaireLibrary/searchPages/searchUtils/searchHelperClasses.class"; import {SearchFields} from "../../openaireLibrary/utils/properties/searchFields"; import {CommunitiesService} from "../../openaireLibrary/connect/communities/communities.service"; -import {Session} from "../../openaireLibrary/login/utils/helper.class"; +import {Session, User} from "../../openaireLibrary/login/utils/helper.class"; import {CommunityInfo} from "../../openaireLibrary/connect/community/communityInfo"; import {SubscribeService} from "../../openaireLibrary/utils/subscribe/subscribe.service"; import {StringUtils} from "../../openaireLibrary/utils/string-utils.class"; import {HelperFunctions} from "../../openaireLibrary/utils/HelperFunctions.class"; +import {UserManagementService} from "../../openaireLibrary/services/user-management.service"; +import {url} from "inspector"; @Component({ selector: 'search-communities', @@ -46,10 +48,12 @@ export class SearchCommunitiesComponent { public showType = false; properties:EnvProperties; @ViewChild (SearchPageComponent) searchPage : SearchPageComponent ; + private user: User; constructor (private route: ActivatedRoute, private _communitiesService: CommunitiesService, - private _subscribeService: SubscribeService) { + private _subscribeService: SubscribeService, + private userManagementService: UserManagementService) { this.errorCodes = new ErrorCodes(); this.errorMessages = new ErrorMessagesComponent(); this.searchUtils.status = this.errorCodes.LOADING; @@ -77,8 +81,10 @@ export class SearchCommunitiesComponent { } this.searchPage.refineFields = this.refineFields; let queryParams = this.searchPage.getQueryParamsFromUrl(params); - - this.initCommunities(queryParams); + this.userManagementService.getUserInfo(this.properties.userInfoUrl).subscribe(user => { + this.user = user; + this.initCommunities(queryParams); + }); }); } @@ -106,12 +112,12 @@ export class SearchCommunitiesComponent { this.totalResults[i] = data[i]; this.totalResults[i].isManager = false; this.totalResults[i].isSubscribed = false; - if(Session.isLoggedIn()) { + if(this.user) { this.totalResults[i].isManager = this.isCommunityManager(this.totalResults[i]); } } - if(Session.isLoggedIn()) { - this._subscribeService.getCommunitiesSubscribedTo(this.properties, Session.getUserEmail()).subscribe( + if(this.user) { + this._subscribeService.getCommunitiesSubscribedTo(this.properties, this.user.email).subscribe( res => { for (let i = 0; i < this.totalResults.length; i++) { this.totalResults[i].isSubscribed = (res.indexOf(this.totalResults[i].communityId) != -1); @@ -161,10 +167,10 @@ export class SearchCommunitiesComponent { if (result.status == 'hidden') { continue; } else if (result.status == "manager") { - let mail = Session.getUserEmail(); + let mail = this.user.email; if (mail == null) { // no user continue; - } else if (Session.isCommunityCurator() || Session.isPortalAdministrator()) { + } else if (Session.isCommunityCurator(this.user) || Session.isPortalAdministrator(this.user)) { ret.push(result); } else if (result.managers.indexOf(mail) != -1) { ret.push(result); @@ -244,7 +250,7 @@ export class SearchCommunitiesComponent { let typeResults: CommunityInfo[] = this.applyFilter('type', params); let statusResults: CommunityInfo[] = this.results; let roleResults: CommunityInfo[] = this.results; - if(Session.isLoggedIn()) { + if(this.user) { statusResults = this.applyFilter('status', params); roleResults = this.applyFilter('role', params); this.resetFilterNumbers('status'); @@ -425,7 +431,7 @@ export class SearchCommunitiesComponent { private isCommunityManager(community: CommunityInfo): boolean { - return Session.isCommunityCurator() || community.managers.indexOf(Session.getUserEmail()) != -1; + return Session.isCommunityCurator(this.user) || community.managers.indexOf(this.user.email) != -1; } /** @@ -448,7 +454,7 @@ export class SearchCommunitiesComponent { } else { filter_original_ids = searchFields.COMMUNITIES_SEARCH_FIELDS.splice(0, 1); } - if(Session.isLoggedIn()) { + if(this.user) { filter_names.push("Status"); filter_ids.push("status"); value_names.push([ "Subscribed", "Non-subscribed"]); diff --git a/src/app/utils/subscribe/invite/invite.component.ts b/src/app/utils/subscribe/invite/invite.component.ts index b5cdb6f..8136352 100644 --- a/src/app/utils/subscribe/invite/invite.component.ts +++ b/src/app/utils/subscribe/invite/invite.component.ts @@ -14,13 +14,14 @@ import {EmailService} from '../../../openaireLibrary/utils/email/email.service'; import {CommunityService} from "../../../openaireLibrary/connect/community/community.service"; import {ErrorCodes} from '../../../openaireLibrary/utils/properties/errorCodes'; import {ErrorMessagesComponent} from '../../../openaireLibrary/utils/errorMessages.component'; -import {Session} from '../../../openaireLibrary/login/utils/helper.class'; +import {Session, User} from '../../../openaireLibrary/login/utils/helper.class'; import {HelperFunctions} from "../../../openaireLibrary/utils/HelperFunctions.class"; import {HelperService} from "../../../openaireLibrary/utils/helper/helper.service"; import {Meta, Title} from "@angular/platform-browser"; import {SEOService} from "../../../openaireLibrary/sharedComponents/SEO/SEO.service"; import {PiwikService} from "../../../openaireLibrary/utils/piwik/piwik.service"; import {PiwikHelper} from "../../piwikHelper"; +import {UserManagementService} from "../../../openaireLibrary/services/user-management.service"; @Component({ selector: 'invite', @@ -68,6 +69,7 @@ export class InviteComponent implements OnInit { public url: string = null; public pageTitle: string = "Invite"; piwiksub: any; + private user: User; constructor( private route: ActivatedRoute, @@ -79,7 +81,8 @@ export class InviteComponent implements OnInit { private _meta: Meta, private _title: Title, private seoService: SEOService, - private _piwikService: PiwikService) { + private _piwikService: PiwikService, + private userManageService: UserManagementService) { this.errorCodes = new ErrorCodes(); this.errorMessages = new ErrorMessagesComponent(); @@ -92,59 +95,62 @@ export class InviteComponent implements OnInit { this.errorMessage = ""; this.missingCommunityId = ""; this.status = this.errorCodes.LOADING; - this.route.queryParams.subscribe( - communityId => { - //if(!this.communityId && typeof document !== 'undefined'){ - this.communityId = ConnectHelper.getCommunityFromDomain(this.properties.domain); - if (!this.communityId) { - this.communityId = communityId['communityId']; - } - - if(this.longView) { - if (this.properties.enablePiwikTrack && (typeof document !== 'undefined')) { - this.piwiksub = this._piwikService.trackView(this.properties, this.pageTitle, PiwikHelper.getSiteId(this.communityId, this.properties.environment)).subscribe(); + this.userManageService.getUserInfo(this.properties.userInfoUrl).subscribe(user => { + this.user = user; + this.route.queryParams.subscribe( + communityId => { + //if(!this.communityId && typeof document !== 'undefined'){ + this.communityId = ConnectHelper.getCommunityFromDomain(this.properties.domain); + if (!this.communityId) { + this.communityId = communityId['communityId']; } - this.url = this.properties.baseLink + this._router.url; - this.seoService.createLinkForCanonicalURL(this.url); - this.updateUrl(this.url); - this.updateTitle(this.pageTitle); - this.updateDescription("OpenAIRE - Connect, Community Gateway, research community, invite"); - } - this.communityIdParam = (this.properties.environment != "development") ? {} : {communityId: this.communityId}; - if (this.communityId != null && this.communityId != '') { - //this.getDivContents(); - this.getPageContents(); - this._communityService.getCommunity(this.properties, this.properties.communityAPI + this.communityId).subscribe( - community => { - this.community = community; - this.fullname = Session.getUserFullName(); - //console.log("Fullname from session " + Session.getUserFullName()); - this.body = Composer.initializeInvitationsBody(this.communityId, this.community.title, this.fullname); - this.email = Composer.initializeInvitationsEmail(community.title); - this.recipients = ""; - - this.status = this.errorCodes.DONE; - }, - error => { - //this.handleError(error) - this.handleError("Error getting community with id: " + this.communityId, error); - this.status = this.errorMessages.getErrorCode(error.status); + if (this.longView) { + if (this.properties.enablePiwikTrack && (typeof document !== 'undefined')) { + this.piwiksub = this._piwikService.trackView(this.properties, this.pageTitle, PiwikHelper.getSiteId(this.communityId, this.properties.environment)).subscribe(); } - ); - } else { - this.status = this.errorCodes.DONE; - this.missingCommunityId = "There is no community selected!"; - } + this.url = this.properties.baseLink + this._router.url; + this.seoService.createLinkForCanonicalURL(this.url); + this.updateUrl(this.url); + this.updateTitle(this.pageTitle); + this.updateDescription("OpenAIRE - Connect, Community Gateway, research community, invite"); + } + this.communityIdParam = (this.properties.environment != "development") ? {} : {communityId: this.communityId}; + if (this.communityId != null && this.communityId != '') { + //this.getDivContents(); + this.getPageContents(); + this._communityService.getCommunity(this.properties, this.properties.communityAPI + this.communityId).subscribe( + community => { + this.community = community; + this.fullname = this.user.fullname; + //console.log("Fullname from session " + Session.getUserFullName()); - }); + this.body = Composer.initializeInvitationsBody(this.communityId, this.community.title, this.fullname); + this.email = Composer.initializeInvitationsEmail(community.title); + this.recipients = ""; - HelperFunctions.scroll(); + this.status = this.errorCodes.DONE; + }, + error => { + //this.handleError(error) + this.handleError("Error getting community with id: " + this.communityId, error); + this.status = this.errorMessages.getErrorCode(error.status); + } + ); + } else { + this.status = this.errorCodes.DONE; + this.missingCommunityId = "There is no community selected!"; + } + + }); + + HelperFunctions.scroll(); + }); }); } ngOnDestroy() { - if(this.piwiksub) { + if (this.piwiksub) { this.piwiksub.unsubscribe(); } } @@ -277,15 +283,15 @@ export class InviteComponent implements OnInit { } */ allowEdit() { - var email = Session.getUserEmail(); + if (!this.user) { + return false; + } + var email = this.user.email; var index = -1; if (email && this.community != null && this.community.managers != null) { index = this.community.managers.indexOf(email); } - - return Session.isPortalAdministrator() || Session.isCommunityCurator() || index != -1; - - + return Session.isPortalAdministrator(this.user) || Session.isCommunityCurator(this.user) || index != -1; } private handleError(message: string, error) { diff --git a/src/app/utils/subscribe/subscribe.component.ts b/src/app/utils/subscribe/subscribe.component.ts index 3d05b67..aa10a26 100644 --- a/src/app/utils/subscribe/subscribe.component.ts +++ b/src/app/utils/subscribe/subscribe.component.ts @@ -6,221 +6,236 @@ import {AlertModal} from '../../openaireLibrary/utils/modal/alert'; import {CommunityService} from '../../openaireLibrary/connect/community/community.service'; import {SubscribeService} from '../../openaireLibrary/utils/subscribe/subscribe.service'; import {EmailService} from "../../openaireLibrary/utils/email/email.service"; -import {Session} from '../../openaireLibrary/login/utils/helper.class'; +import {Session, User} from '../../openaireLibrary/login/utils/helper.class'; import {Email} from "../../openaireLibrary/utils/email/email"; import {Composer} from "../../openaireLibrary/utils/email/composer"; import {LoginErrorCodes} from '../../openaireLibrary/login/utils/guardHelper.class'; +import {UserManagementService} from "../../openaireLibrary/services/user-management.service"; declare var UIkit: any; @Component({ - selector: 'subscribe', - template: ` + selector: 'subscribe', + template: ` -
+

Please login first to subscribe

- - + + - + Members {{subscribers}} - ` + ` }) export class SubscribeComponent { // @Input() showSubscribe:boolean = true; - @Input() showNumbers:boolean; - @Input() communityId:string; - @Input() showTemplate:boolean = true; + @Input() showNumbers: boolean; + @Input() communityId: string; + @Input() showTemplate: boolean = true; @Output() subscribeEvent = new EventEmitter(); public community = null; public emailToInformManagers: Email; loading: boolean = false; - subscribed:boolean = null; - properties:EnvProperties; - subscribers:number= null; - showLoginAlert:Boolean = false; + subscribed: boolean = null; + properties: EnvProperties; + subscribers: number = null; + showLoginAlert: Boolean = false; @ViewChild(AlertModal) alert; - constructor (private route: ActivatedRoute, - private _subscribeService: SubscribeService, - private _emailService: EmailService, - private _communityService: CommunityService, private router: Router - ) { - } + private user: User; - public ngOnInit() { - this.route.data - .subscribe((data: { envSpecific: EnvProperties }) => { - this.properties = data.envSpecific; - if(!this.showNumbers){ - let email = Session.getUserEmail(); - if(email == null){ - this.subscribed = false; - }else{ - if(this.communityId){ - this._subscribeService.isSubscribedToCommunity(this.properties, this.communityId, email).subscribe ( - res => { - this.subscribed = res; - if(this.subscribed){ - this.subscribeEvent.emit({ - value: "ok" - }); - } - }, - error => { - this.handleError("Error getting response if email: "+email+" is subscribed to community with id: "+this.communityId, error); - }); - } - } - }else{ - if(this.communityId){ - this._subscribeService.getCommunitySubscribers(this.properties, this.communityId).subscribe ( - res => { - this.subscribers = (res && res.subscribers && res.subscribers.length )?res.subscribers.length:0; - }, - error => { - this.handleError("Error getting community subscribers for community with id: "+this.communityId, error); - }); - } - } - if(this.communityId){ - this.emailToInformManagers = {body: "", subject: "", recipients: []}; + constructor(private route: ActivatedRoute, + private _subscribeService: SubscribeService, + private _emailService: EmailService, + private _communityService: CommunityService, + private router: Router, + private userManagementService: UserManagementService + ) { + } - this._communityService.getCommunity(this.properties, this.properties.communityAPI+this.communityId).subscribe ( - community => { - this.community = community; - }, - error => { - //console.log('System error retrieving community profile', error) - this.handleError("Error getting community with id: "+this.communityId, error); - } - ); - } - }); - - - } - - subscribe(){ - var email = Session.getUserEmail(); - if(email == null){ - this.subscribed = false; - // this.showLoginAlert = true; - this.router.navigate(['/user-info'], { queryParams: { "errorCode": LoginErrorCodes.ACTION_REQUIRES_LOGIN, "redirectUrl": this.router.url } }); - }else{ - this.loading = true; - this.showLoginAlert = false; - this._subscribeService.subscribeToCommunity(this.communityId, email, this.properties.adminToolsAPIURL).subscribe ( - res => { - this.loading = false; - if(res.status && res.status != 200) { - this.subscribeEvent.emit({ - value: "error" - }); - UIkit.notification({ - message : 'An error occured. Please try again!', - status : 'warning', - timeout : 3000, - pos : 'top-center' - }); - } else { - if(!this.subscribed){ - this.subscribed = true; - this.subscribeEvent.emit({ - value: "ok" - }); - this._emailService.sendEmail(this.properties.adminToolsAPIURL + "/notifyForNewSubscribers/" + this.communityId, Composer.composeEmailToInformManagers(this.community.title, this.communityId, this.community.managers, email)).subscribe( - res => { - //console.log("The email has been sent successfully!") - }, - error => { - //console.log(error) - this.handleError("Error notifying managers about new subscribers for community with id: "+this.communityId, error); - } - ); - } + public ngOnInit() { + this.route.data + .subscribe((data: { envSpecific: EnvProperties }) => { + this.properties = data.envSpecific; + this.userManagementService.getUserInfo(this.properties.userInfoUrl).subscribe( user => { + this.user = user; + if (!this.showNumbers) { + let email = (this.user)?this.user.email:null; + if (email == null) { + this.subscribed = false; + } else { + if (this.communityId) { + this._subscribeService.isSubscribedToCommunity(this.properties, this.communityId, email).subscribe( + res => { + this.subscribed = res; + if (this.subscribed) { + this.subscribeEvent.emit({ + value: "ok" + }); + } + }, + error => { + this.handleError("Error getting response if email: " + email + " is subscribed to community with id: " + this.communityId, error); + }); + } } - }, - error => { - this.loading = false; + } else { + if (this.communityId) { + this._subscribeService.getCommunitySubscribers(this.properties, this.communityId).subscribe( + res => { + this.subscribers = (res && res.subscribers && res.subscribers.length) ? res.subscribers.length : 0; + }, + error => { + this.handleError("Error getting community subscribers for community with id: " + this.communityId, error); + }); + } + } + if (this.communityId) { + this.emailToInformManagers = {body: "", subject: "", recipients: []}; + + this._communityService.getCommunity(this.properties, this.properties.communityAPI + this.communityId).subscribe( + community => { + this.community = community; + }, + error => { + //console.log('System error retrieving community profile', error) + this.handleError("Error getting community with id: " + this.communityId, error); + } + ); + } + }); + }); + } + + subscribe() { + var email = (this.user)?this.user.email:null; + if (email == null) { + this.subscribed = false; + // this.showLoginAlert = true; + this.router.navigate(['/user-info'], { + queryParams: { + "errorCode": LoginErrorCodes.ACTION_REQUIRES_LOGIN, + "redirectUrl": this.router.url + } + }); + } else { + this.loading = true; + this.showLoginAlert = false; + this._subscribeService.subscribeToCommunity(this.communityId, email, this.properties.adminToolsAPIURL).subscribe( + res => { + this.loading = false; + if (res.status && res.status != 200) { this.subscribeEvent.emit({ value: "error" }); UIkit.notification({ - message : 'An error occured. Please try again!', - status : 'warning', - timeout : 3000, - pos : 'top-center' + message: 'An error occured. Please try again!', + status: 'warning', + timeout: 3000, + pos: 'top-center' }); - //console.log(error) - this.handleError("Error subscribing email: "+email+" to community with id: "+this.communityId, error); - }); - } - } - - unsubscribe(){ - var email = Session.getUserEmail(); - if(email == null){ - this.subscribed = false; - }else{ - this.loading = true; - //this.properties.adminToolsAPIURL - this._subscribeService.unSubscribeToCommunity(this.communityId, email,this.properties.adminToolsAPIURL).subscribe ( - res => { - this.loading = false; - if(res.status && res.status != 200) { - UIkit.notification({ - message : 'An error occured. Please try again!', - status : 'warning', - timeout : 3000, - pos : 'top-center' + } else { + if (!this.subscribed) { + this.subscribed = true; + this.subscribeEvent.emit({ + value: "ok" }); - } else { - //console.log(res); - if(this.subscribed){ - this.subscribed = false; - } - } - }, - error => { - this.loading = false; - UIkit.notification({ - message : 'An error occured. Please try again!', - status : 'warning', - timeout : 3000, - pos : 'top-center' - }); - //console.log(error) - this.handleError("Error unsubscribing email: "+email+" from community with id: "+this.communityId, error); + this._emailService.sendEmail(this.properties.adminToolsAPIURL + "/notifyForNewSubscribers/" + this.communityId, Composer.composeEmailToInformManagers(this.community.title, this.communityId, this.community.managers, email)).subscribe( + res => { + //console.log("The email has been sent successfully!") + }, + error => { + //console.log(error) + this.handleError("Error notifying managers about new subscribers for community with id: " + this.communityId, error); + } + ); + } + } + }, + error => { + this.loading = false; + this.subscribeEvent.emit({ + value: "error" }); - } + UIkit.notification({ + message: 'An error occured. Please try again!', + status: 'warning', + timeout: 3000, + pos: 'top-center' + }); + //console.log(error) + this.handleError("Error subscribing email: " + email + " to community with id: " + this.communityId, error); + }); } + } - confirmOpen(){ + unsubscribe() { + var email = (this.user)?this.user.email:null; + if (email == null) { + this.subscribed = false; + } else { + this.loading = true; + //this.properties.adminToolsAPIURL + this._subscribeService.unSubscribeToCommunity(this.communityId, email, this.properties.adminToolsAPIURL).subscribe( + res => { + this.loading = false; + if (res.status && res.status != 200) { + UIkit.notification({ + message: 'An error occured. Please try again!', + status: 'warning', + timeout: 3000, + pos: 'top-center' + }); + } else { + //console.log(res); + if (this.subscribed) { + console.log('here') + this.subscribed = false; + } + } + }, + error => { + this.loading = false; + UIkit.notification({ + message: 'An error occured. Please try again!', + status: 'warning', + timeout: 3000, + pos: 'top-center' + }); + //console.log(error) + this.handleError("Error unsubscribing email: " + email + " from community with id: " + this.communityId, error); + }); + } + } - this.alert.cancelButton = true; - this.alert.okButton = true; - this.alert.alertTitle = "Unsubscribe community "; - this.alert.message = "Do you want to proceed? "; - this.alert.okButtonText = "Yes"; - this.alert.cancelButtonText = "No"; - this.alert.open(); - } - confirmClose(data){ - this.unsubscribe(); - } + confirmOpen() { - private handleError(message: string, error) { - console.error("Subscribe (component): "+message, error); - } + this.alert.cancelButton = true; + this.alert.okButton = true; + this.alert.alertTitle = "Unsubscribe community "; + this.alert.message = "Do you want to proceed? "; + this.alert.okButtonText = "Yes"; + this.alert.cancelButtonText = "No"; + this.alert.open(); + } + + confirmClose(data) { + this.unsubscribe(); + } + + private handleError(message: string, error) { + console.error("Subscribe (component): " + message, error); + } } diff --git a/src/assets/env-properties.json b/src/assets/env-properties.json index 618a713..6b823de 100644 --- a/src/assets/env-properties.json +++ b/src/assets/env-properties.json @@ -37,7 +37,9 @@ "piwikBaseUrl" :"https://analytics.openaire.eu/piwik.php?idsite=", "piwikSiteId" : "80", - "loginUrl" :"http://scoobydoo.di.uoa.gr:8080/dnet-openaire-users-1.0.0-SNAPSHOT/openid_connect_login", + "loginUrl" :"http://rudie.di.uoa.gr:8280/dnet-login/openid_connect_login", + + "userInfoUrl" : "http://rudie.di.uoa.gr:8280/dnet-openaire-users-1.0.0-SNAPSHOT/api/users/getUserInfo?accessToken=", "logoutUrl" :"https://aai.openaire.eu/proxy/saml2/idp/SingleLogoutService.php?ReturnTo=",