userNotifications.js revision 9fef165933ea6e9a2504d4c73bd661a3c8dc5de8
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
03831d35f7499c87d51205817c93e9a8d42c4baestevel *
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Copyright (c) 2011-2012 ForgeRock AS. All rights reserved.
03831d35f7499c87d51205817c93e9a8d42c4baestevel *
03831d35f7499c87d51205817c93e9a8d42c4baestevel * The contents of this file are subject to the terms
03831d35f7499c87d51205817c93e9a8d42c4baestevel * of the Common Development and Distribution License
03831d35f7499c87d51205817c93e9a8d42c4baestevel * (the License). You may not use this file except in
03831d35f7499c87d51205817c93e9a8d42c4baestevel * compliance with the License.
03831d35f7499c87d51205817c93e9a8d42c4baestevel *
03831d35f7499c87d51205817c93e9a8d42c4baestevel * You can obtain a copy of the License at
03831d35f7499c87d51205817c93e9a8d42c4baestevel * http://forgerock.org/license/CDDLv1.0.html
03831d35f7499c87d51205817c93e9a8d42c4baestevel * See the License for the specific language governing
03831d35f7499c87d51205817c93e9a8d42c4baestevel * permission and limitations under the License.
03831d35f7499c87d51205817c93e9a8d42c4baestevel *
03831d35f7499c87d51205817c93e9a8d42c4baestevel * When distributing Covered Code, include this CDDL
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Header Notice in each file and include the License file
03831d35f7499c87d51205817c93e9a8d42c4baestevel * at http://forgerock.org/license/CDDLv1.0.html
03831d35f7499c87d51205817c93e9a8d42c4baestevel * If applicable, add the following below the CDDL Header,
03831d35f7499c87d51205817c93e9a8d42c4baestevel * with the fields enclosed by brackets [] replaced by
03831d35f7499c87d51205817c93e9a8d42c4baestevel * your own identifying information:
03831d35f7499c87d51205817c93e9a8d42c4baestevel * "Portions Copyrighted [year] [name of copyright owner]"
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/**
03831d35f7499c87d51205817c93e9a8d42c4baestevel * @author mbilski
03831d35f7499c87d51205817c93e9a8d42c4baestevel *
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Endpoint for managing user notifications
03831d35f7499c87d51205817c93e9a8d42c4baestevel *
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel(function () {
03831d35f7499c87d51205817c93e9a8d42c4baestevel var userId, res, ret, params, notification;
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel if (request.method === "read") {
03831d35f7499c87d51205817c93e9a8d42c4baestevel userId = request.parent.security.userid.id;
03831d35f7499c87d51205817c93e9a8d42c4baestevel res = {};
03831d35f7499c87d51205817c93e9a8d42c4baestevel params = {
03831d35f7499c87d51205817c93e9a8d42c4baestevel "_queryId": "get-notifications-for-user",
03831d35f7499c87d51205817c93e9a8d42c4baestevel "userId": userId
03831d35f7499c87d51205817c93e9a8d42c4baestevel };
03831d35f7499c87d51205817c93e9a8d42c4baestevel ret = openidm.query("repo/ui/notification", params);
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel if(ret && ret.result) {
03831d35f7499c87d51205817c93e9a8d42c4baestevel res = ret.result;
03831d35f7499c87d51205817c93e9a8d42c4baestevel }
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel return res;
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel } else if (request.method === "delete"){
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel notification = openidm.read("repo/ui/notification/"+request.parent.query.notificationId);
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel if(notification.receiverId === request.parent.security.userid.id) {
03831d35f7499c87d51205817c93e9a8d42c4baestevel openidm['delete']('repo/ui/notification/' + notification._id, notification._rev);
03831d35f7499c87d51205817c93e9a8d42c4baestevel } else {
03831d35f7499c87d51205817c93e9a8d42c4baestevel throw {
03831d35f7499c87d51205817c93e9a8d42c4baestevel "code" : 403,
03831d35f7499c87d51205817c93e9a8d42c4baestevel "message" : "Access denied"
03831d35f7499c87d51205817c93e9a8d42c4baestevel };
03831d35f7499c87d51205817c93e9a8d42c4baestevel }
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel } else {
03831d35f7499c87d51205817c93e9a8d42c4baestevel throw {
03831d35f7499c87d51205817c93e9a8d42c4baestevel "code" : 403,
03831d35f7499c87d51205817c93e9a8d42c4baestevel "message" : "Access denied"
03831d35f7499c87d51205817c93e9a8d42c4baestevel };
03831d35f7499c87d51205817c93e9a8d42c4baestevel }
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel}());