'use strict';

/**
 * 检验是否为项目管理员中间件
 *
 * @author CaiAoLin
 * @date 2018/1/23
 * @version
 */

module.exports = app => {
    return function* projectManagerCheck(next) {
        const sessionProject = this.session.sessionProject;
        const sessionUser = this.session.sessionUser;
        try {
            if (sessionProject.userAccount === undefined) {
                throw '不存在对应项目数据';
            }
            // 判断当前用户是否为管理员
            if (sessionUser.account !== sessionProject.userAccount) {
                throw '当前用户没有权限';
            }
        } catch (error) {
            this.session.message = {
                type: 'error',
                icon: 'exclamation-circle',
                message: error.toString(),
            };
            return this.redirect(this.request.headers.referer);
        }
        yield next;
    };
};
