Advertisement
Guest User

Untitled

a guest
Jan 13th, 2017
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function isOwn(e, s, r) {
  2.     return e.isAuthenticated() && s == r ? !0 : !1;
  3. }
  4.  
  5. function findUserValues(e, s, r, a, o, i, n, t, u, d, m, l, p, c, h) {
  6.     var f = {};
  7.     addresses.find({
  8.         _id: {
  9.             $in: o
  10.         }
  11.     }, function(o, g) {
  12.         o ? (logger.log("error", ERRMSG + "user addresses", {
  13.             Error: o,
  14.             Action: a
  15.         }), e.flash("error", ERRMSG + "your address "), s.redirect("/")) : (f.address = g,
  16.         addresses.find({
  17.             _id: {
  18.                 $in: i
  19.             }
  20.         }, function(o, i) {
  21.             o ? (logger.log("error", ERRMSG + "previous user addresses", {
  22.                 Error: o,
  23.                 Action: a
  24.             }), e.flash("error", ERRMSG + "your previous addresses"), s.redirect("/")) : (f.previousaddresses = i,
  25.             dates.find({
  26.                 _id: {
  27.                     $in: n
  28.                 }
  29.             }, function(o, i) {
  30.                 o ? (logger.log("error", ERRMSG + "user dates", {
  31.                     Error: o,
  32.                     Action: a
  33.                 }), e.flash("error", ERRMSG + "your dates"), s.redirect("/")) : (f.dates = i, roles.find({
  34.                     _id: {
  35.                         $in: t
  36.                     }
  37.                 }, function(o, i) {
  38.                     if (o) {
  39.                         logger.log("error", ERRMSG + "user roles", {
  40.                             Error: o,
  41.                             Action: a
  42.                         }), e.flash("error", ERRMSG + "your user roles"), s.redirect("/");
  43.                     } else {
  44.                         f.roles = i;
  45.                         var n = [];
  46.                         for (var t in i) {
  47.                             n.push(i[t].startdate);
  48.                         }
  49.                         dates.find({
  50.                             _id: {
  51.                                 $in: n
  52.                             }
  53.                         }, function(o, i) {
  54.                             o ? (logger.log("error", ERRMSG + "user roles dates", {
  55.                                 Error: o,
  56.                                 Action: a
  57.                             }), e.flash("error", ERRMSG + "your user role dates"), s.redirect("/")) : (f.roles_dates = i,
  58.                             roles.find({
  59.                                 _id: {
  60.                                     $in: u
  61.                                 }
  62.                             }, function(o, i) {
  63.                                 if (o) {
  64.                                     logger.log("error", ERRMSG + "previous user roles", {
  65.                                         Error: o,
  66.                                         Action: a
  67.                                     }), e.flash("error", ERRMSG + "your previous user roles"), s.redirect("/");
  68.                                 } else {
  69.                                     f.previousroles = i;
  70.                                     var n = [];
  71.                                     for (var t in i) {
  72.                                         n.push(i[t].startdate), n.push(i[t].enddate);
  73.                                     }
  74.                                     dates.find({
  75.                                         _id: {
  76.                                             $in: n
  77.                                         }
  78.                                     }, function(o, i) {
  79.                                         o ? (logger.log("error", ERRMSG + "previous user roles dates", {
  80.                                             Error: o,
  81.                                             Action: a
  82.                                         }), e.flash("error", ERRMSG + "your previous role dates"), s.redirect("/")) : (f.previousroles_dates = i,
  83.                                         payments.find({
  84.                                             _id: {
  85.                                                 $in: d
  86.                                             }
  87.                                         }, function(o, i) {
  88.                                             if (o) {
  89.                                                 logger.log("error", ERRMSG + "user payments", {
  90.                                                     Error: o,
  91.                                                     Action: a
  92.                                                 }), e.flash("error", ERRMSG + "your payments"), s.redirect("/");
  93.                                             } else {
  94.                                                 f.payments = i;
  95.                                                 var n = [];
  96.                                                 for (var t in i) {
  97.                                                     n.push(i[t].date);
  98.                                                 }
  99.                                                 dates.find({
  100.                                                     _id: {
  101.                                                         $in: n
  102.                                                     }
  103.                                                 }, function(o, i) {
  104.                                                     o ? (logger.log("error", ERRMSG + "user payment dates", {
  105.                                                         Error: o,
  106.                                                         Action: a
  107.                                                     }), e.flash("error", ERRMSG + "your payments dates"), s.redirect("/")) : (f.payments_dates = i,
  108.                                                     names.find({
  109.                                                         _id: {
  110.                                                             $in: m
  111.                                                         }
  112.                                                     }, function(o, i) {
  113.                                                         o ? (logger.log("error", ERRMSG + "user names", {
  114.                                                             Error: o,
  115.                                                             Action: a
  116.                                                         }), e.flash("error", ERRMSG + "your name"), s.redirect("/")) : (f.name = i, names.find({
  117.                                                             _id: {
  118.                                                                 $in: l
  119.                                                             }
  120.                                                         }, function(o, i) {
  121.                                                             o ? (logger.log("error", ERRMSG + "previous user names", {
  122.                                                                 Error: o,
  123.                                                                 Action: a
  124.                                                             }), e.flash("error", ERRMSG + "your previous names"), s.redirect("/")) : (f.previousnames = i,
  125.                                                             roles_description.find({
  126.                                                                 use: !0
  127.                                                             }, function(o, i) {
  128.                                                                 o ? (logger.log("error", ERRMSG + "role descriptions", {
  129.                                                                     Error: o,
  130.                                                                     Action: a
  131.                                                                 }), e.flash("error", ERRMSG = "role descriptions"), s.redirect("/")) : (f.role_descriptions = i,
  132.                                                                 phones.find({
  133.                                                                     _id: {
  134.                                                                         $in: p
  135.                                                                     }
  136.                                                                 }, function(o, i) {
  137.                                                                     o ? (logger.log("error", ERRMSG + "user phone numbers", {
  138.                                                                         Error: o,
  139.                                                                         Action: a
  140.                                                                     }), e.flash("error", ERRMSG + "your phone number"), s.redirect("/")) : (f.phones = i,
  141.                                                                     phones.find({
  142.                                                                         _id: {
  143.                                                                             $in: c
  144.                                                                         }
  145.                                                                     }, function(o, i) {
  146.                                                                         o ? (logger.log("error", ERRMSG + "user previous phone numbers", {
  147.                                                                             Error: o,
  148.                                                                             Action: a
  149.                                                                         }), e.flash("error", ERRMSG + "your previous phone numbers"), s.redirect("/")) : (f.previousphonenumbers = i,
  150.                                                                         h(e, s, r, f));
  151.                                                                     }));
  152.                                                                 }));
  153.                                                             }));
  154.                                                         }));
  155.                                                     }));
  156.                                                 });
  157.                                             }
  158.                                         }));
  159.                                     });
  160.                                 }
  161.                             }));
  162.                         });
  163.                     }
  164.                 }));
  165.             }));
  166.         }));
  167.     });
  168. }
  169.  
  170. function retrieveProfile(e, s, r) {
  171.     var a = e.params.name, o = !1;
  172.     e.query && e.query.editable && "true" == e.query.editable && e.isAuthenticated() && e.user && (o = !0),
  173.     users.findOne({
  174.         username: a
  175.     }, function(a, i) {
  176.         a ? (logger.log("error", "Cannot find user during a user profile view: ", {
  177.             Error: a,
  178.             AffectedUser: e.params.name
  179.         }), e.flash("error", "There was an error when finding the user account "), s.status(500),
  180.         s.redirect("/")) : i ? findUserValues(e, s, r, "A user tried to view a user profile ", [ i.address ], i.previousaddresses, i.dates, i.roles, i.previousroles, i.payments, [ i.name ], i.previousnames, i.phones, i.previousphonenumbers, function(e, s, r, a) {
  181.             var n = {}, t = !1, u = !1, d = 1, m = 0, l = !1;
  182.             e.isAuthenticated() && e.user && (t = isOwn(e, e.user.username, i.username)), t === !0 && permissions.check(r, [ permissionsList.permissions.edit_own_normal ]) ? u = !0 : permissions.checkOr(r, [ permissionsList.permissions.edit_any_normal, permissionsList.permissions.edit_refractortest ]) && (u = !0),
  183.             (permissions.check(r, [ permissionsList.permissions.delete_any ]) || permissions.check(r, [ permissionsList.permissions.delete_own ]) && t || permissions.check(r, [ permissionsList.permissions.membership ])) && (logger.log("debug", "User can view membership information "),
  184.             l = !0);
  185.             for (var p in userKeys) {
  186.                 if ("address" == userKeys[p] || "name" == userKeys[p]) {
  187.                     var c = getInformationFromCollection(userKeys[p], r, t, a, null);
  188.                     null != c && void 0 != c && "" != c && (n[userKeys[p]] = c);
  189.                 } else {
  190.                     if ("previousaddresses" == userKeys[p]) {
  191.                         n = getInformationFromCollectionArray(userKeys[p], "previous_address_", "address", r, t, a, n, null, 1)[0];
  192.                     } else {
  193.                         if ("dates" == userKeys[p]) {
  194.                             var h = getDateFromCollection(a.dates, !0);
  195.                             for (var f in h) {
  196.                                 n[f] = h[f];
  197.                             }
  198.                         } else {
  199.                             if ("payments" == userKeys[p]) {
  200.                                 if (0 != a[userKeys[p]].length && 1 == permissions.check(r, [ permissions.getFieldPermission("payments", t)[1] ])) {
  201.                                     var g = 1;
  202.                                     for (var y in a.payments) {
  203.                                         n["payment_" + (g + "")] = {};
  204.                                         for (var v in keys.payments) {
  205.                                             if ("__v" != keys.payments[v] && "date" != keys.payments[v]) {
  206.                                                 n["payment_" + (g + "")][keys.payments[v]] = {
  207.                                                     value: a.payments[y][keys.payments[v]],
  208.                                                     editable: 0
  209.                                                 };
  210.                                             } else {
  211.                                                 if ("date" == keys.payments[v]) {
  212.                                                     for (var b in a.payments_dates) {
  213.                                                         if (a.payments_dates[b]._id + "" == a.payments[y].date + "") {
  214.                                                             var h = getDateFromCollection([ a.payments_dates[b] ], !1);
  215.                                                             for (var w in h.date_1) {
  216.                                                                 n["payment_" + (g + "")][keys.payments[v] + "_" + w] = h.date_1[w];
  217.                                                             }
  218.                                                             break;
  219.                                                         }
  220.                                                     }
  221.                                                 }
  222.                                             }
  223.                                         }
  224.                                         g++;
  225.                                     }
  226.                                 }
  227.                             } else {
  228.                                 if ("roles" == userKeys[p]) {
  229.                                     if (0 != a[userKeys[p]].length && 1 == permissions.check(r, [ permissions.getFieldPermission("roles", t)[1] ])) {
  230.                                         var _ = 1;
  231.                                         for (var A in a.roles) {
  232.                                             n["role_" + (_ + "")] = {};
  233.                                             for (var k in a.role_descriptions) {
  234.                                                 if (a.role_descriptions[k]._id + "" == a.roles[A].role + "") {
  235.                                                     for (var E in keys.roles_description) {
  236.                                                         "__v" != keys.roles_description[E] && "use" != keys.roles_description[E] && (n["role_" + (_ + "")][keys.roles_description[E]] = {
  237.                                                             value: a.role_descriptions[k][keys.roles_description[E]]
  238.                                                         }, 1 == permissions.check(r, [ permissions.getFieldPermission("roles", t)[0] ]) ? (n["role_" + (_ + "")][keys.roles_description[E]].editable = 2,
  239.                                                         n["role_" + (_ + "")][keys.roles_description[E]].location = "/admin/roles/show") : n["role_" + (_ + "")][keys.roles_description[E]].editable = 0);
  240.                                                     }
  241.                                                 }
  242.                                             }
  243.                                             for (var U in a.roles_dates) {
  244.                                                 if (a.roles_dates[U]._id + "" == a.roles[A].startdate + "") {
  245.                                                     var h = getDateFromCollection([ a.roles_dates[U] ], !1);
  246.                                                     for (var T in h.date_1) {
  247.                                                         n["role_" + (_ + "")]["start_date_" + T] = h.date_1[T];
  248.                                                     }
  249.                                                     break;
  250.                                                 }
  251.                                             }
  252.                                             _++;
  253.                                         }
  254.                                     }
  255.                                 } else {
  256.                                     if ("previousroles" == userKeys[p]) {
  257.                                         if (0 != a.previousroles.length && 1 == permissions.check(r, [ permissions.getFieldPermission("previousroles", t)[1] ])) {
  258.                                             var P = 1;
  259.                                             for (var K in a.previousroles) {
  260.                                                 n["previous_role_" + (P + "")] = {};
  261.                                                 for (var k in a.role_descriptions) {
  262.                                                     if (a.role_descriptions[k]._id + "" == a.previousroles[K].role + "") {
  263.                                                         for (var E in keys.roles_description) {
  264.                                                             "__v" != keys.roles_description[E] && "use" != keys.roles_description[E] && (n["previous_role_" + (P + "")][keys.roles_description[E]] = {
  265.                                                                 value: a.role_descriptions[k][keys.roles_description[E]],
  266.                                                                 editable: 0
  267.                                                             });
  268.                                                         }
  269.                                                     }
  270.                                                 }
  271.                                                 for (var U in a.previousroles_dates) {
  272.                                                     if (a.previousroles_dates[U]._id + "" == a.previousroles[A].startdate + "") {
  273.                                                         var h = getDateFromCollection([ a.previousroles_dates[U] ], !1);
  274.                                                         for (var T in h.date_1) {
  275.                                                             n["previous_role_" + (P + "")]["start_date_" + T] = h.date_1[T];
  276.                                                         }
  277.                                                     }
  278.                                                     if (a.previousroles_dates[U]._id + "" == a.previousroles[A].enddate + "") {
  279.                                                         var h = getDateFromCollection([ a.previousroles_dates[U] ], !1);
  280.                                                         for (var T in h.date_1) {
  281.                                                             n["previous_role_" + (P + "")]["end_date_" + T] = h.date_1[T];
  282.                                                         }
  283.                                                     }
  284.                                                 }
  285.                                                 P++;
  286.                                             }
  287.                                         }
  288.                                     } else {
  289.                                         if ("previousnames" == userKeys[p]) {
  290.                                             n = getInformationFromCollectionArray(userKeys[p], "previous_names_", "name", r, t, a, n, null, 1)[0];
  291.                                         } else {
  292.                                             if ("phones" == userKeys[p]) {
  293.                                                 phonesInformation = getInformationFromCollectionArray(userKeys[p], "phone_number_", "phones", r, t, a, n, null, d),
  294.                                                 n = phonesInformation[0], d = phonesInformation[1];
  295.                                             } else {
  296.                                                 if ("previousphonenumbers" == userKeys[p]) {
  297.                                                     n = getInformationFromCollectionArray(userKeys[p], "previous_phone_number_", "phones", r, t, a, n, null, 1)[0];
  298.                                                 } else {
  299.                                                     if ("password" == userKeys[p]) {
  300.                                                         permissions.check(r, [ permissionsList.permissions.edit_any_password ]) ? m = 2 : t === !0 && (m = 1);
  301.                                                     } else {
  302.                                                         if ("membershipapproved" == userKeys[p] || "permissions" == userKeys[p]) {
  303.                                                             var S = null;
  304.                                                             "permissions" == userKeys[p] ? S = "/admin/permissions/list" : "membershipapproved" == userKeys[p] && (S = "/admin/membership"),
  305.                                                             null == i[userKeys[p]] || void 0 == i[userKeys[p]] || "" == i[userKeys[p]] && i[userKeys[p]] !== !1 && 0 !== i[userKeys[p]] || 1 != permissions.check(r, [ permissions.getFieldPermission(userKeys[p], t)[1] ]) || ("permissions" == userKeys[p] ? n[userKeys[p]] = informationFromArray([ i[userKeys[p]] ], userKeys[p], S, r, t) : "membershipapproved" == userKeys[p] && (n[userKeys[p]] = informationFromArray([ STATUSNUMBERMEANINGS[i[userKeys[p]] + ""] ], userKeys[p], S, r, t)));
  306.                                                         } else {
  307.                                                             "previousemails" == userKeys[p] || "emails" == userKeys[p] ? null == i[userKeys[p]] || void 0 == i[userKeys[p]] || "" == i[userKeys[p]] && i[userKeys[p]] !== !1 && 0 !== i[userKeys[p]] || 1 != permissions.check(r, [ permissions.getFieldPermission(userKeys[p], t)[1] ]) || (n[userKeys[p]] = informationFromArray(i[userKeys[p]], userKeys[p], null, r, t)) : ("refractortest" == userKeys[p] || "BAA" == userKeys[p] || "FRAS" == userKeys[p]) && (null == i[userKeys[p]] || void 0 == i[userKeys[p]] || "" == i[userKeys[p]] && i[userKeys[p]] !== !1 && 0 !== i[userKeys[p]] || 1 != permissions.check(r, [ permissions.getFieldPermission(userKeys[p], t)[1] ]) || (n[userKeys[p]] = informationFromArray([ i[userKeys[p]] ], userKeys[p], null, r, t)));
  308.                                                         }
  309.                                                     }
  310.                                                 }
  311.                                             }
  312.                                         }
  313.                                     }
  314.                                 }
  315.                             }
  316.                         }
  317.                     }
  318.                 }
  319.             }
  320.             if (0 == permissions.check(r, [ permissions.getFieldPermission("username", t)[1] ])) {
  321.                 e.flash("error", "You do not have permission to view this profile "), s.redirect("/");
  322.             } else {
  323.                 var R = [ "makeURL.js" ];
  324.                 u === !0 && R.push("userTemplate.js"), s.render(path.resolve("./templates/userTemplate.pug"), {
  325.                     title: i.username + " Profile",
  326.                     base: {
  327.                         path: "/profile/" + e.params.name,
  328.                         target: "_self"
  329.                     },
  330.                     styles: [ "userTemplate.css" ],
  331.                     scripts: R,
  332.                     userInformation: n,
  333.                     editable: o + "",
  334.                     editPassword: m,
  335.                     membership: l,
  336.                     selfPlaceTitle: "true",
  337.                     phone_count: d,
  338.                     canEdit: u + "",
  339.                     capitalise: capitalise
  340.                 });
  341.             }
  342.         }) : (e.flash("error", "There is no user with the specified user name"), s.redirect("/"));
  343.     });
  344. }
  345.  
  346. function getInformationFromCollection(e, s, r, a, o) {
  347.     if (0 != a[e].length) {
  348.         if (null != a[e][0] && void 0 != a[e][0] && "" != a[e][0] && 1 == permissions.check(s, [ permissions.getFieldPermission(e, r)[1] ])) {
  349.             var i = a[e][0], n = {};
  350.             for (var t in keys[e]) {
  351.                 "_id" != keys[e][t] && "__v" != keys[e][t] && (n[keys[e][t]] = {
  352.                     value: i[keys[e][t]]
  353.                 }, 1 == permissions.check(s, [ permissions.getFieldPermission(e, r)[0] ]) ? null == o || void 0 == o || "" == o ? n[keys[e][t]].editable = 1 : (n[keys[e][t]].editable = 2,
  354.                 n[keys[e][t]].location = o) : n[keys[e][t]].editable = 0);
  355.             }
  356.             return n;
  357.         }
  358.         return null;
  359.     }
  360.     return null;
  361. }
  362.  
  363. function getInformationFromCollectionArray(e, s, r, a, o, i, n, t, u) {
  364.     if (0 != i[e].length && 1 == permissions.check(a, [ permissions.getFieldPermission(e, o)[1] ])) {
  365.         for (var d in i[e]) {
  366.             n[s + (u + "")] = {};
  367.             for (var m in keys[r]) {
  368.                 "_id" != keys[r][m] && "__v" != keys[r][m] && (n[s + (u + "")][keys[r][m]] = {
  369.                     value: i[e][d][keys[r][m]]
  370.                 }, 1 == permissions.check(a, [ permissions.getFieldPermission(e, o)[0] ]) ? null == t || void 0 == t || "" == t ? n[s + (u + "")][keys[r][m]].editable = 1 : (n[s + (u + "")][keys[r][m]].editable = 2,
  371.                 n[s + (u + "")][keys[r][m]].location = t) : n[s + (u + "")][keys[r][m]].editable = 0);
  372.             }
  373.             u++;
  374.         }
  375.     }
  376.     return [ n, u ];
  377. }
  378.  
  379. function getDateFromCollection(e, s) {
  380.     var r = {}, a = {};
  381.     for (var o in dateTypes) {
  382.         a[dateTypes[o]] = 1;
  383.     }
  384.     if (0 != e.length) {
  385.         for (var i in e) {
  386.             var n = "";
  387.             n = 1 == s ? "date_" + e[i].type + "_" + (a[e[i].type] + "") : "date_" + (a[e[i].type] + ""),
  388.             r[n] = {};
  389.             for (var t in keys.dates) {
  390.                 "_id" != keys.dates[t] && "__v" != keys.dates[t] && "type" != keys.dates[t] && (r[n][keys.dates[t]] = {
  391.                     value: e[i][keys.dates[t]],
  392.                     editable: 0
  393.                 });
  394.             }
  395.             a[e[i].type]++;
  396.         }
  397.         return r;
  398.     }
  399.     return null;
  400. }
  401.  
  402. function informationFromArray(e, s, r, a, o) {
  403.     var i = {}, n = 1;
  404.     return e.forEach(function(e) {
  405.         i[n + ""] = {
  406.             value: e
  407.         }, 1 == permissions.check(a, [ permissions.getFieldPermission(s, o)[0] ]) ? null == r || void 0 == r || "" == r ? i[n + ""].editable = 1 : (i[n + ""].editable = 2,
  408.         i[n + ""].location = r) : i[n + ""].editable = 0, n++;
  409.     }), i;
  410. }
  411.  
  412. function NEWshowProfiles(e, s, r) {
  413.     var a = {};
  414.     users.find({}, function(o, i) {
  415.         if (o) {
  416.             logger.log("error", "There was an error whilst finding a list of users ", {
  417.                 Error: o
  418.             }), e.flash("error", "There was an error finding the users "), s.redirect("/");
  419.         } else {
  420.             var n = [], t = [], u = [], d = [], m = [], l = [], p = [], c = [], h = [], f = [];
  421.             for (var g in i) {
  422.                 n.push(i[g].address), void 0 != i[g].previousaddresses && null != i[g].previousaddresses && "" != i[g].previousaddresses && i[g].previousaddresses.forEach(function(e) {
  423.                     t.push(e);
  424.                 }), void 0 != i[g].dates && null != i[g].dates && "" != i[g].dates && i[g].dates.forEach(function(e) {
  425.                     u.push(e);
  426.                 }), void 0 != i[g].roles && null != i[g].roles && "" != i[g].roles && i[g].roles.forEach(function(e) {
  427.                     d.push(e);
  428.                 }), void 0 != i[g].previousroles && null != i[g].previousroles && "" != i[g].previousroles && i[g].previousroles.forEach(function(e) {
  429.                     m.push(e);
  430.                 }), void 0 != i[g].payments && null != i[g].payments && "" != i[g].payments && i[g].payments.forEach(function(e) {
  431.                     l.push(e);
  432.                 }), p.push(i[g].name), void 0 != i[g].previousnames && null != i[g].previousnames && "" != i[g].previousnames && i[g].previousnames.forEach(function(e) {
  433.                     c.push(e);
  434.                 }), void 0 != i[g].phones && null != i[g].phones && "" != i[g].phones && i[g].phones.forEach(function(e) {
  435.                     h.push(e);
  436.                 }), void 0 != i[g].previousphonenumbers && null != i[g].previousphonenumbers && "" != i[g].previousphonenumbers && i[g].previousphonenumbers.forEach(function(e) {
  437.                     f.push(e);
  438.                 });
  439.             }
  440.             findUserValues(e, s, r, "A user tried to see the list of every user ", n, t, u, d, m, l, p, c, h, f, function(e, s, r, o) {
  441.                 var n = {};
  442.                 for (var t in i) {
  443.                     a[i[t].username] = {}, a[i[t].username][" "] = {};
  444.                     for (var u in userKeys) {
  445.                         if ("address" == userKeys[u] || "name" == userKeys[u]) {
  446.                             a[i[t].username][userKeys[u]] = getCollection(userKeys[u], o[userKeys[u]], userKeys[u]);
  447.                         } else {
  448.                             if ("previousaddresses" == userKeys[u]) {
  449.                                 var d = getCollectionArray(userKeys[u], o[userKeys[u]]);
  450.                                 a[i[t].username] = d[0], n[userKeys[u]] = d[1];
  451.                             } else {
  452.                                 if ("dates" == userKeys[u]) {
  453.                                     var m = {};
  454.                                     if (m[dateTypes[0]] = 1, m[dateTypes[1]] = 1, m[dateTypes[2]] = 1, m[dateTypes[4]] = 1,
  455.                                     void 0 != i[t].dates && null != i[t].dates && "" != i[t].dates && 1 == permissions.check(r, [ permissions.getFieldPermission("dates", !1)[1] ])) {
  456.                                         for (var l in date) {
  457.                                             if (-1 != i[t].dates.indexOf(date[l]._id)) {
  458.                                                 a[i[t].username]["dates_" + date[l].type + "_" + (m[date[l].type] + "")] = {};
  459.                                                 for (var p in datesKeys) {
  460.                                                     "_id" != datesKeys[p] && "__v" != datesKeys[p] && "type" != datesKeys[p] && (a[i[t].username]["dates_" + date[l].type + "_" + (m[date[l].type] + "")][datesKeys[p]] = date[l][datesKeys[p]]);
  461.                                                 }
  462.                                                 m[date[l].type]++;
  463.                                             }
  464.                                         }
  465.                                         n.dates_join < m.join && (n.dates_join = m.join), n.dates_leave < m.leave && (n.dates_leave = m.leave),
  466.                                         n.dates_renew < m.renew && (n.dates_renew = m.renew), n.dates_refractor < m.refractor && (n.dates_refractor = m.refractor);
  467.                                     }
  468.                                 }
  469.                             }
  470.                         }
  471.                     }
  472.                 }
  473.             });
  474.         }
  475.     });
  476. }
  477.  
  478. function getCollection(e, s, r) {
  479.     var a = {};
  480.     if ("address" == userKeys[l] && void 0 != user[e] && null != user[e] && "" != user[e] && 1 == permissions.check(userPermissions, [ permissions.getFieldPermission(e, !1)[1] ])) {
  481.         for (var o in s) {
  482.             if (user[e] + "" == s[o]._id + "") {
  483.                 for (var i in keys[r]) {
  484.                     "_id" != keys[r][i] && "__v" != keys[r][i] && (a[keys[r]] = s[o][keys[r]]);
  485.                 }
  486.                 break;
  487.             }
  488.         }
  489.     }
  490. }
  491.  
  492. function getCollectionArray(e, s, r, a) {
  493.     var o = 1;
  494.     if (0 == r[e].length && 0 != s.length && 1 == permissions.check(userPermissions, [ permissions.getFieldPermission(e, !1)[1] ])) {
  495.         for (var i in r[e]) {
  496.             for (var n in s) {
  497.                 if (r[e][i] + "" == s[n]._id + "") {
  498.                     r[e + "_" + (o + "")] = {};
  499.                     for (var t in keys[a]) {
  500.                         "_id" != keys[a][n] && "__v" != keys[a][n] && (r[e + "_" + (o + "")][keys[a][n]] = s[i][keys[a][n]]);
  501.                     }
  502.                     o++;
  503.                     break;
  504.                 }
  505.             }
  506.         }
  507.     }
  508.     return [ r, o ];
  509. }
  510.  
  511. function getCollectionDates() {
  512.     var e = {};
  513.     for (var s in dateTypes) {
  514.         e[dateTypes[s]] = 1;
  515.     }
  516. }
  517.  
  518. function showProfiles(e, s, r, a) {
  519.     var o = {}, i = {};
  520.     users.find({}, function(n, t) {
  521.         if (n) {
  522.             logger.log("error", "There was an error whilst finding a list of users ", {
  523.                 Error: n
  524.             }), o.findUsersError = n, e.flash("errorobj", o), s.redirect("/");
  525.         } else {
  526.             if (t) {
  527.                 var u = [], d = [], m = [], l = [], p = [], c = [], h = [], f = [], g = [], y = [];
  528.                 for (var v in t) {
  529.                     u.push(t[v].address), void 0 != t[v].previousaddresses && null != t[v].previousaddresses && "" != t[v].previousaddresses && t[v].previousaddresses.forEach(function(e) {
  530.                         d.push(e);
  531.                     }), void 0 != t[v].dates && null != t[v].dates && "" != t[v].dates && t[v].dates.forEach(function(e) {
  532.                         m.push(e);
  533.                     }), void 0 != t[v].roles && null != t[v].roles && "" != t[v].roles && t[v].roles.forEach(function(e) {
  534.                         l.push(e);
  535.                     }), void 0 != t[v].previousroles && null != t[v].previousroles && "" != t[v].previousroles && t[v].previousroles.forEach(function(e) {
  536.                         p.push(e);
  537.                     }), void 0 != t[v].payments && null != t[v].payments && "" != t[v].payments && t[v].payments.forEach(function(e) {
  538.                         c.push(e);
  539.                     }), h.push(t[v].name), void 0 != t[v].previousnames && null != t[v].previousnames && "" != t[v].previousnames && t[v].previousnames.forEach(function(e) {
  540.                         f.push(e);
  541.                     }), void 0 != t[v].phones && null != t[v].phones && "" != t[v].phones && t[v].phones.forEach(function(e) {
  542.                         g.push(e);
  543.                     }), void 0 != t[v].previousphonenumbers && null != t[v].previousphonenumbers && "" != t[v].previousphonenumbers && t[v].previousphonenumbers.forEach(function(e) {
  544.                         y.push(e);
  545.                     });
  546.                 }
  547.                 findUserValues(e, s, r, o, "A user tried to see the list of every user ", u, d, m, l, p, c, h, f, g, y, function(e, s, r, o, n, u, d, m, l, p, c, h, f, g, y, v, b, w) {
  548.                     var _ = Object.keys(addresses.schema.paths), A = Object.keys(dates.schema.paths), k = Object.keys(roles.schema.paths), E = Object.keys(roles_description.schema.paths), U = Object.keys(payments.schema.paths), T = Object.keys(names.schema.paths), P = Object.keys(phones.schema.paths), K = {
  549.                         previousaddresses: 0,
  550.                         dates_join: 1,
  551.                         dates_leave: 0,
  552.                         dates_renew: 0,
  553.                         dates_refractor: 0,
  554.                         roles: 0,
  555.                         previousroles: 0,
  556.                         payments: 0,
  557.                         previousnames: 0,
  558.                         emails: 1,
  559.                         previousemails: 0,
  560.                         phones: 0,
  561.                         previousphonenumbers: 0
  562.                     };
  563.                     for (var S in t) {
  564.                         i[t[S].username] = {}, i[t[S].username][" "] = {};
  565.                         for (var R in userKeys) {
  566.                             if ("address" == userKeys[R]) {
  567.                                 if (void 0 != t[S].address && null != t[S].address && "" != t[S].address && 1 == permissions.check(r, [ permissions.getFieldPermission("address", !1)[1] ])) {
  568.                                     for (var j in n) {
  569.                                         if (t[S].address + "" == n[j]._id + "") {
  570.                                             i[t[S].username].address = {};
  571.                                             for (var F in _) {
  572.                                                 "_id" != _[F] && "__v" != _[F] && (i[t[S].username].address[_[F]] = n[j][_[F]]);
  573.                                             }
  574.                                         }
  575.                                     }
  576.                                 }
  577.                             } else {
  578.                                 if ("previousaddresses" == userKeys[R]) {
  579.                                     var Y = 1;
  580.                                     if (void 0 != t[S].previousaddresses && null != t[S].previousaddresses && "" != t[S].previousaddresses && 1 == permissions.check(r, [ permissions.getFieldPermission("previousaddresses", !1)[1] ])) {
  581.                                         for (var O in u) {
  582.                                             if (-1 != t[S].previousaddresses.indexOf(u[O]._id)) {
  583.                                                 i[t[S].username]["previousaddresses_" + (Y + "")] = {};
  584.                                                 for (var C in _) {
  585.                                                     "_id" != _[C] && "__v" != _[C] && (i[t[S].username]["previousaddresses_" + (Y + "")][_[C]] = u[O][_[C]]);
  586.                                                 }
  587.                                                 Y++;
  588.                                             }
  589.                                         }
  590.                                         K.previousaddresses < Y && (K.previousaddresses = Y);
  591.                                     }
  592.                                 } else {
  593.                                     if ("dates" == userKeys[R]) {
  594.                                         var D = {};
  595.                                         if (D[dateTypes[0]] = 1, D[dateTypes[1]] = 1, D[dateTypes[2]] = 1, D[dateTypes[4]] = 1,
  596.                                         void 0 != t[S].dates && null != t[S].dates && "" != t[S].dates && 1 == permissions.check(r, [ permissions.getFieldPermission("dates", !1)[1] ])) {
  597.                                             for (var M in d) {
  598.                                                 if (-1 != t[S].dates.indexOf(d[M]._id)) {
  599.                                                     i[t[S].username]["dates_" + d[M].type + "_" + (D[d[M].type] + "")] = {};
  600.                                                     for (var x in A) {
  601.                                                         "_id" != A[x] && "__v" != A[x] && "type" != A[x] && (i[t[S].username]["dates_" + d[M].type + "_" + (D[d[M].type] + "")][A[x]] = d[M][A[x]]);
  602.                                                     }
  603.                                                     D[d[M].type]++;
  604.                                                 }
  605.                                             }
  606.                                             K.dates_join < D.join && (K.dates_join = D.join), K.dates_leave < D.leave && (K.dates_leave = D.leave),
  607.                                             K.dates_renew < D.renew && (K.dates_renew = D.renew), K.dates_refractor < D.refractor && (K.dates_refractor = D.refractor);
  608.                                         }
  609.                                     } else {
  610.                                         if ("roles" == userKeys[R]) {
  611.                                             var L = 1;
  612.                                             if (void 0 != t[S].roles && null != t[S].roles && "" != t[S].roles && 1 == permissions.check(r, [ permissions.getFieldPermission("roles", !1)[1] ])) {
  613.                                                 logger.log("critial", "Can see roles ");
  614.                                                 for (var N in m) {
  615.                                                     if (-1 != t[S].roles.indexOf(m[N]._id)) {
  616.                                                         i[t[S].username]["roles_" + (L + "")] = {};
  617.                                                         for (var G in v) {
  618.                                                             if (v[G]._id + "" == m[N].role + "") {
  619.                                                                 for (var q in E) {
  620.                                                                     "__v" != E[q] && "use" != E[q] && (i[t[S].username]["roles_" + (L + "")]["Role_" + E[q]] = v[G][E[q]]);
  621.                                                                 }
  622.                                                             }
  623.                                                         }
  624.                                                         for (var B in l) {
  625.                                                             if (l[B]._id + "" == m[N].startdate + "") {
  626.                                                                 for (var I in A) {
  627.                                                                     "_id" != A[I] && "__v" != A[I] && "type" != A[I] && (i[t[S].username]["roles_" + (L + "")]["Start_" + A[I]] = l[B][A[I]]);
  628.                                                                 }
  629.                                                             }
  630.                                                         }
  631.                                                         L++;
  632.                                                     }
  633.                                                 }
  634.                                                 K.roles < L && (K.roles = L);
  635.                                             }
  636.                                         } else {
  637.                                             if ("previousroles" == userKeys[R]) {
  638.                                                 var V = 1;
  639.                                                 if (void 0 != t[S].previousroles && null != t[S].previousroles && "" != t[S].previousroles && 1 == permissions.check(r, [ permissions.getFieldPermission("previousroles", !1)[1] ])) {
  640.                                                     logger.log("critial", "Can see previous roles ");
  641.                                                     for (var $ in p) {
  642.                                                         if (-1 != t[S].previousroles.indexOf(p[$]._id)) {
  643.                                                             i[t[S].username]["previousroles_" + (V + "")] = {};
  644.                                                             for (var W in v) {
  645.                                                                 if (v[W]._id + "" == p[$].role + "") {
  646.                                                                     for (var z in E) {
  647.                                                                         "__v" != E[z] && "use" != E[z] && (i[t[S].username]["previousroles_" + (V + "")]["Role_" + E[z]] = v[W][E[z]]);
  648.                                                                     }
  649.                                                                 }
  650.                                                             }
  651.                                                             for (var H in c) {
  652.                                                                 if (c[H]._id + "" == p[$].startdate + "") {
  653.                                                                     for (var J in A) {
  654.                                                                         "_id" != A[J] && "__v" != A[J] && "type" != A[J] && (i[t[S].username]["previousroles_" + (V + "")]["Start_" + A[J]] = c[H][A[J]]);
  655.                                                                     }
  656.                                                                 }
  657.                                                                 if (c[H]._id + "" == p[$].enddate + "") {
  658.                                                                     for (var Q in A) {
  659.                                                                         "_id" != A[Q] && "__v" != A[Q] && "type" != A[Q] && (i[t[S].username]["previousroles_" + (V + "")]["End_" + A[Q]] = c[H][A[Q]]);
  660.                                                                     }
  661.                                                                 }
  662.                                                             }
  663.                                                             V++;
  664.                                                         }
  665.                                                     }
  666.                                                     K.previousroles < V && (K.previousroles = V);
  667.                                                 }
  668.                                             } else {
  669.                                                 if ("payments" == userKeys[R]) {
  670.                                                     var X = 1;
  671.                                                     if (void 0 != t[S].payments && null != t[S].payments && "" != t[S].payments && 1 == permissions.check(r, [ permissions.getFieldPermission("payments", !1)[1] ])) {
  672.                                                         for (var Z in h) {
  673.                                                             if (-1 != t[S].payments.indexOf(h[Z]._id)) {
  674.                                                                 i[t[S].username]["payments_" + (X + "")] = {};
  675.                                                                 for (var es in U) {
  676.                                                                     "__v" != U[es] && "date" != U[es] && (i[t[S].username]["payments_" + (X + "")][U[es]] = h[Z][U[es]]);
  677.                                                                 }
  678.                                                                 for (var ss in f) {
  679.                                                                     if (f[ss]._id + "" == h[Z].date + "") {
  680.                                                                         for (var G in A) {
  681.                                                                             "_id" != A[G] && "__v" != A[G] && "type" != A[G] && (i[t[S].username]["payments_" + (X + "")]["date_" + A[G]] = f[ss][A[G]]);
  682.                                                                         }
  683.                                                                     }
  684.                                                                 }
  685.                                                                 X++;
  686.                                                             }
  687.                                                         }
  688.                                                         K.payments < X && (K.payments = X);
  689.                                                     }
  690.                                                 } else {
  691.                                                     if ("name" == userKeys[R]) {
  692.                                                         if (void 0 != t[S].name && null != t[S].name && "" != t[S].name && 1 == permissions.check(r, [ permissions.getFieldPermission("name", !1)[1] ])) {
  693.                                                             for (var G in g) {
  694.                                                                 if (t[S].name + "" == g[G]._id + "") {
  695.                                                                     i[t[S].username].name = {};
  696.                                                                     for (var q in T) {
  697.                                                                         "_id" != T[q] && "__v" != T[q] && (i[t[S].username].name[T[q]] = g[G][T[q]]);
  698.                                                                     }
  699.                                                                 }
  700.                                                             }
  701.                                                         }
  702.                                                     } else {
  703.                                                         if ("previousnames" == userKeys[R]) {
  704.                                                             var rs = 1;
  705.                                                             if (void 0 != t[S].previousnames && null != t[S].previousnames && "" != t[S].previousnames && 1 == permissions.check(r, [ permissions.getFieldPermission("previousnames", !1)[1] ])) {
  706.                                                                 for (var B in y) {
  707.                                                                     if (-1 != t[S].previousnames.indexOf(y[B]._id)) {
  708.                                                                         i[t[S].username]["previousnames_" + (rs + "")] = {};
  709.                                                                         for (var I in T) {
  710.                                                                             "_id" != T[I] && "__v" != T[I] && (i[t[S].username]["previousnames_" + (rs + "")][T[I]] = y[B][T[I]]);
  711.                                                                         }
  712.                                                                         rs++;
  713.                                                                     }
  714.                                                                 }
  715.                                                                 K.previousnames < rs && (K.previousnames = rs);
  716.                                                             }
  717.                                                         } else {
  718.                                                             if ("phones" == userKeys[R]) {
  719.                                                                 var as = 1;
  720.                                                                 if (void 0 != t[S].phones && null != t[S].phones && "" != t[S].phones && 1 == permissions.check(r, [ permissions.getFieldPermission("phones", !1)[1] ])) {
  721.                                                                     for (var W in b) {
  722.                                                                         if (-1 != t[S].phones.indexOf(b[W]._id)) {
  723.                                                                             i[t[S].username]["phones_" + (as + "")] = {};
  724.                                                                             for (var z in P) {
  725.                                                                                 "_id" != P[z] && "__v" != P[z] && (i[t[S].username]["phones_" + (as + "")][P[z]] = b[W][P[z]]);
  726.                                                                             }
  727.                                                                             as++;
  728.                                                                         }
  729.                                                                     }
  730.                                                                     K.phones < as && (K.phones = as);
  731.                                                                 }
  732.                                                             } else {
  733.                                                                 if ("previousphonenumbers" == userKeys[R]) {
  734.                                                                     var os = 1;
  735.                                                                     if (void 0 != t[S].previousphonenumbers && null != t[S].previousphonenumbers && "" != t[S].previousphonenumbers && 1 == permissions.check(r, [ permissions.getFieldPermission("previousphonenumbers", !1)[1] ])) {
  736.                                                                         for (var H in w) {
  737.                                                                             if (-1 != t[S].previousphonenumbers.indexOf(w[H]._id)) {
  738.                                                                                 i[t[S].username]["previousphonenumbers_" + (os + "")] = {};
  739.                                                                                 for (var J in P) {
  740.                                                                                     "_id" != P[J] && "__v" != P[J] && (i[t[S].username]["previousphonenumbers_" + (os + "")][P[J]] = w[H][P[J]]);
  741.                                                                                 }
  742.                                                                                 os++;
  743.                                                                             }
  744.                                                                         }
  745.                                                                         K.previousphonenumbers < os && (K.previousphonenumbers = os);
  746.                                                                     }
  747.                                                                 } else {
  748.                                                                     if ("password" == userKeys[R] || "username" == userKeys[R] || "messages" == userKeys[R]) {
  749.                                                                         ;
  750.                                                                     } else {
  751.                                                                         if ("emails" == userKeys[R] || "previousemails" == userKeys[R]) {
  752.                                                                             if (void 0 != t[S][userKeys[R]] && null != t[S][userKeys[R]] && "" != t[S][userKeys[R]] && 1 == permissions.check(r, [ permissions.getFieldPermission(userKeys[R], !1)[1] ])) {
  753.                                                                                 var is = 1;
  754.                                                                                 i[t[S].username][userKeys[R]] = {}, t[S][userKeys[R]].forEach(function(e) {
  755.                                                                                     i[t[S].username][userKeys[R]][is + ""] = e, is++;
  756.                                                                                 }), K[userKeys[R]] < is && (K[userKeys[R]] = is);
  757.                                                                             }
  758.                                                                         } else {
  759.                                                                             void 0 == t[S][userKeys[R]] || null == t[S][userKeys[R]] || "" == t[S][userKeys[R]] && t[S][userKeys[R]] !== !1 && 0 !== t[S][userKeys[R]] || 1 != permissions.check(r, [ permissions.getFieldPermission(userKeys[R], !1)[1] ]) || (i[t[S].username][" "][userKeys[R]] = t[S][userKeys[R]]);
  760.                                                                         }
  761.                                                                     }
  762.                                                                 }
  763.                                                             }
  764.                                                         }
  765.                                                     }
  766.                                                 }
  767.                                             }
  768.                                         }
  769.                                     }
  770.                                 }
  771.                             }
  772.                         }
  773.                     }
  774.                     a(o, i, {
  775.                         title: "Users list",
  776.                         styles: [ "datatables.net-dt/css/jquery.dataTables.css", "datatables.net-buttons/Buttons-1.2.2/css/buttons.dataTables.css" ],
  777.                         scripts: [ "datatables.net/js/jquery.dataTables.js", "datatables.net-buttons/Buttons-1.2.2/js/buttons.print.js", "datatables.net-buttons/Buttons-1.2.2/js/buttons.colVis.js", "datatables.net-buttons/Buttons-1.2.2/js/dataTables.buttons.js", "userList.js" ],
  778.                         maxCounts: K,
  779.                         keys: {
  780.                             user: userKeys,
  781.                             address: _,
  782.                             date: A,
  783.                             role: k,
  784.                             roles_description: E,
  785.                             name: T,
  786.                             payment: U,
  787.                             phones: P
  788.                         },
  789.                         capitalise: capitalise,
  790.                         permissions: function(e) {
  791.                             return permissions.check(r, [ permissions.getFieldPermission(e, !1)[1] ]);
  792.                         }
  793.                     });
  794.                 });
  795.             } else {
  796.                 logger.log("error", "No users could be found when trying to retrieve a list of users "),
  797.                 o.findNoUsers = n, e.flash(n), s.redirect("/");
  798.             }
  799.         }
  800.     });
  801. }
  802.  
  803. function suspendProfile(e, s, r) {
  804.     var a = null, o = !1;
  805.     e.isAuthenticated() && e.user ? (a = isOwn(e, e.params.name, e.user.username), o = !0) : (e.flash("error", "You must be logged in to suspend an account "),
  806.     s.redirect("/")), o === !0 && (permissions.check(r, permissionsList.permissions.delete_own) && a || permissions.check(r, permissionsList.permissions.delete_any)) && users.findOne({
  807.         username: e.params.name
  808.     }, function(o, i) {
  809.         if (o) {
  810.             e.flash("error", "There was an error when finding your user account "), logger.log("error", SUSACCERR, {
  811.                 Error: o,
  812.                 User: e.user.username,
  813.                 AffectedUser: e.params.name
  814.             }), s.status(500), s.redirect("/");
  815.         } else {
  816.             var n = makeDate(new Date(), dateTypes[1]);
  817.             dates.findOne(n, function(o, t) {
  818.                 if (o) {
  819.                     e.flash("error", "There was an error when obtaining the date of your account suspension "),
  820.                     logger.log("error", SUSACCERR, {
  821.                         Error: o,
  822.                         user: e.user.username,
  823.                         AffectedUser: e.params.name
  824.                     }), s.status(500), s.redirect("/");
  825.                 } else {
  826.                     if (t) {
  827.                         suspendUser(e, s, r, a, i, t);
  828.                     } else {
  829.                         var u = new dates(n);
  830.                         u.save(function(o, n) {
  831.                             o ? (e.flash("error", "There was an error when trying to save a new account suspension date "),
  832.                             logger.log("error", SUSACCERR, {
  833.                                 Error: o,
  834.                                 user: e.user.username,
  835.                                 AffectedUser: e.params.name
  836.                             }), s.status(500), s.redirect("/")) : suspendUser(e, s, r, a, i, n);
  837.                         });
  838.                     }
  839.                 }
  840.             });
  841.         }
  842.     });
  843. }
  844.  
  845. function suspendUser(e, s, r, a, o, i) {
  846.     var n = o.dates;
  847.     n.push(i._id), users.update({
  848.         username: e.params.name
  849.     }, {
  850.         membershipapproved: 6,
  851.         dates: n
  852.     }, function(r, o, i) {
  853.         logger.log("transaction", "Account suspension update status: ", {
  854.             Error: r,
  855.             Count: o,
  856.             Status: i
  857.         }), r ? (logger.log("error", SUSACCERR), e.flash("error", "There was an error when updating your user profile "),
  858.         s.status(500), s.redirect("/")) : a === !0 ? (e.flash("success", "Your account was successfully suspended "),
  859.         s.redirect("/logout")) : (e.flash("success", "The account was successfully suspended "),
  860.         s.redirect("/"));
  861.     });
  862. }
  863.  
  864. function changePassword(e, s, r) {
  865.     if (e.isAuthenticated() && e.user) {
  866.         var a = isOwn(e, e.params.name, e.user.username);
  867.         1 == permissions.check(r, [ permissions.getFieldPermission("password", a)[0] ]) ? s.render(path.resolve("./views/password.pug"), {
  868.             title: "Change Password for " + e.params.name,
  869.             styles: [],
  870.             scripts: []
  871.         }) : (e.flash("error", "You do not have permission to change this user's password "),
  872.         s.redirect("/"));
  873.     } else {
  874.         e.flash("error", "You must be logged in to change a password "), s.redirect("/");
  875.     }
  876. }
  877.  
  878. function changeEmail(e, s, r) {
  879.     if (e.isAuthenticated() && e.user) {
  880.         var a = isOwn(e, e.params.name, e.user.username);
  881.         1 == permissions.check(r, [ permissions.getFieldPermission("emails", a)[0] ]) ? addDataPage(e, s, "email", [], []) : (e.flash("error", "You do not have permission to change this user's email "),
  882.         s.redirect("/profile/" + e.params.name));
  883.     } else {
  884.         e.flash("error", "You must be logged in to add an email address "), s.redirect("/profile/" + e.params.name);
  885.     }
  886. }
  887.  
  888. function changePhone(e, s, r) {
  889.     if (e.isAuthenticated() && e.user) {
  890.         var a = isOwn(e, e.params.name, e.user.username);
  891.         1 == permissions.check(r, [ permissions.getFieldPermission("phones", a)[0] ]) ? addDataPage(e, s, "phone", [], []) : (e.flash("error", "You do not have permission to change this user's phone number "),
  892.         s.redirect("/profile/" + e.params.name));
  893.     } else {
  894.         e.flash("error", "You must be logged in to add a phone number "), s.redirect("/profile/" + e.params.name);
  895.     }
  896. }
  897.  
  898. function addDataPage(e, s, r, a, o) {
  899.     s.render(path.resolve("./views/addData.pug"), {
  900.         title: "Add " + r + " for " + e.params.name,
  901.         styles: a,
  902.         scripts: o,
  903.         datum: r
  904.     });
  905. }
  906.  
  907. function editPassword(e, s, r) {
  908.     logger.log("user", "A user is changing a pasword "), e.user && e.isAuthenticated() ? e.user.username == e.params.name || permissions.check(r, [ permissionsList.permissions.edit_any_password ]) ? users.findOne({
  909.         username: e.user.username
  910.     }, function(r, a) {
  911.         r ? (logger.log("error", "There was an error when a user tried to update a password ", {
  912.             Error: r,
  913.             User: e.user.username,
  914.             AffectedUser: e.params.name
  915.         }), e.flash("errorobj", r), s.redirect("/")) : a && e.body ? e.body.newPassword && e.body.confirmPassword ? e.body.newPassword.length < 10 || e.body.newPassword.length > 100 ? (e.flash("error", "Your password must be between 10 and 100 characters long "),
  916.         s.redirect("/profile/" + e.params.name + "/edit" + e.params.data)) : bcrypt.compare(e.body.currentPassword, a.password, function(r, o) {
  917.             r ? (logger.log("error", "There was an error matching a user's password during a password change ", {
  918.                 Error: r,
  919.                 User: e.user.username
  920.             }), console.log(r), e.flash("error", "There was an error checking your password"),
  921.             s.redirect("/profile/" + e.params.name + "/edit/" + e.params.data)) : o !== !0 ? (e.flash("error", "Your current password did not match "),
  922.             s.redirect("/profile/" + e.params.name + "/edit/" + e.params.data)) : e.body.newPassword !== e.body.confirmPassword ? (e.flash("error", "Your new password did not match the value in the confirm password box "),
  923.             s.redirect("/profile/" + e.params.name + "/edit/" + e.params.data)) : makePassword(e, s, e.body.newPassword, function(r) {
  924.                 e.user.username == e.params.name ? users.update({
  925.                     _id: a._id
  926.                 }, {
  927.                     password: r
  928.                 }, function(r, a, o) {
  929.                     logger.log("transaction", "Password update status", {
  930.                         Error: r,
  931.                         Count: a,
  932.                         Status: o
  933.                     }), r ? (e.flash("errorobj", r), s.redirect("/")) : (e.flash("success", "Your password was changes sucessfully "),
  934.                     s.redirect("/profile/" + e.params.name));
  935.                 }) : users.findOne({
  936.                     username: e.params.name
  937.                 }, function(o, i) {
  938.                     o ? (logger.log("error", "There was an error when a user tried to update a password ", {
  939.                         Error: o,
  940.                         User: e.user.username
  941.                     }), e.flash("errorobj", o), s.redirect("/")) : a ? users.update({
  942.                         _id: i._id
  943.                     }, {
  944.                         password: r
  945.                     }, function(r, o, i) {
  946.                         logger.log("transaction", "Password update status", {
  947.                             User: a.username,
  948.                             Error: r,
  949.                             Count: o,
  950.                             Status: i
  951.                         }), r ? (e.flash("errorobj", r), s.redirect("/")) : (e.flash("success", "The password was changed sucessfully "),
  952.                         s.redirect("/profile/" + e.params.name));
  953.                     }) : (logger.log("error", "A user trying to change a password does not seem to exist ", {
  954.                         User: e.user.username,
  955.                         AffectedUser: e.params.name
  956.                     }), e.flash("error", "There is no user with the specified username "), s.redirect("/profile"));
  957.                 });
  958.             });
  959.         }) : (e.flash("error", "You did not send the password to change the password to "),
  960.         s.redirect("/profile/" + e.params.name + "/edit" + e.params.data)) : (logger.log("error", "A user trying to change a password does not seem to exist ", {
  961.             User: e.user.username,
  962.             AffectedUser: e.params.name
  963.         }), e.flash("error", "There is no user with your username "), s.redirect("/logout"));
  964.     }) : (e.flash("error", "You do not have permission to change this user's password "),
  965.     s.redirect("/")) : (e.flash("error", "You must be logged in to change a password "),
  966.     s.redirect("/"));
  967. }
  968.  
  969. function deleteEmail(e, s, r) {
  970.     var a = null;
  971.     e.isAuthenticated() && e.user ? a = isOwn(e, e.params.name, e.user.username) : (e.flash("error", "You must be logged in to delete an email "),
  972.     s.redirect("/")), 1 == permissions.check(r, [ permissions.getFieldPermission("emails", a)[0] ]) ? users.findOne({
  973.         username: e.params.name
  974.     }, function(r, a) {
  975.         if (r) {
  976.             logger.log("error", "There was an error when a user tried to delete an email ", {
  977.                 Error: r,
  978.                 User: e.user.username,
  979.                 AffectedUser: e.params.name
  980.             }), e.flash("errorobj", r), s.redirect("/");
  981.         } else {
  982.             if (a) {
  983.                 if (a.emails.length > 1) {
  984.                     var o = [], i = [];
  985.                     a.emails.forEach(function(s) {
  986.                         s != e.body.id ? o.push(s) : i.push(s);
  987.                     }), a.previousemails.forEach(function(e) {
  988.                         i.push(e);
  989.                     }), users.update({
  990.                         _id: a._id
  991.                     }, {
  992.                         emails: o,
  993.                         previousemails: i
  994.                     }, function(r, o, i) {
  995.                         logger.log("transaction", "Email deletion status", {
  996.                             User: a.username,
  997.                             Error: r,
  998.                             Count: o,
  999.                             Status: i
  1000.                         }), r ? (logger.log("error", "There was an error during a user email deletion "),
  1001.                         e.flash("errorobj", r), s.redirect("/")) : (e.flash("success", "The email was deleted successfully"),
  1002.                         s.redirect("/profile/" + e.params.name));
  1003.                     });
  1004.                 } else {
  1005.                     e.flash("error", "You must have at least one email address registered "), s.redirect("/profile/" + e.params.name);
  1006.                 }
  1007.             } else {
  1008.                 logger.log("error", "A user is trying to change an email for a user that does not exist ", {
  1009.                     User: e.user.username,
  1010.                     AffectedUser: e.params.name
  1011.                 }), e.flash("error", "There is no user with the specified username "), s.redirect("/");
  1012.             }
  1013.         }
  1014.     }) : (e.flash("error", "You do not have permission to change this email address "),
  1015.     s.redirect("/"));
  1016. }
  1017.  
  1018. function addEmail(e, s, r) {
  1019.     var a = null;
  1020.     e.isAuthenticated() && e.user ? a = isOwn(e, e.params.name, e.user.username) : (e.flash("error", "You must be logged in to add an email "),
  1021.     s.redirect("/")), 1 == permissions.check(r, [ permissions.getFieldPermission("emails", a)[0] ]) ? e.body ? users.findOne({
  1022.         username: e.params.name
  1023.     }, function(r, a) {
  1024.         if (r) {
  1025.             logger.log("error", "There was an error when a user tried to add an email ", {
  1026.                 Error: r,
  1027.                 User: e.user.username,
  1028.                 AffectedUser: e.params.name
  1029.             }), e.flash("errorobj", r), s.status(500), s.redirect("/");
  1030.         } else {
  1031.             if (a) {
  1032.                 if (null == e.body.newemail || void 0 == e.body.newemail || "" == e.body.newemail || -1 == e.body.newemail.indexOf("@")) {
  1033.                     e.flash("error", "The email you sent was invalid "), s.redirect("/profile/" + e.params.name);
  1034.                 } else {
  1035.                     var o = a.emails;
  1036.                     o.push(e.body.newemail), users.update({
  1037.                         _id: a._id
  1038.                     }, {
  1039.                         emails: o
  1040.                     }, function(r, a, o) {
  1041.                         logger.log("transaction", "Email update status: ", {
  1042.                             Error: r,
  1043.                             Count: a,
  1044.                             Status: o
  1045.                         }), r ? (logger.log("error", "There was an error when updating a user's emails "),
  1046.                         e.flash("errorobj", r), s.status(500), s.redirect("/profile/" + e.params.name + "?editable=true")) : (e.flash("success", "Your email address was added successfully "),
  1047.                         s.redirect("/profile/" + e.params.name));
  1048.                     });
  1049.                 }
  1050.             } else {
  1051.                 logger.log("error", "A user is trying to change an email for a user that does not exist ", {
  1052.                     User: e.user.username,
  1053.                     AffectedUser: e.params.name
  1054.                 }), e.flash("error", "There is no user with the specified username "), s.redirect("/");
  1055.             }
  1056.         }
  1057.     }) : (e.flash("error", "You did not send any data to the server "), s.redirect("/profile/" + e.params.name)) : (e.flash("error", "You do not have permission to add this email address "),
  1058.     s.redirect("/"));
  1059. }
  1060.  
  1061. function deletePhone(e, s, r) {
  1062.     var a = null;
  1063.     e.isAuthenticated() && e.user ? a = isOwn(e, e.params.name, e.user.username) : (e.flash("error", "You must be logged in to delete a phone number "),
  1064.     s.redirect("/")), 1 == permissions.check(r, [ permissions.getFieldPermission("phones", a)[0] ]) ? users.findOne({
  1065.         username: e.params.name
  1066.     }, function(r, a) {
  1067.         r ? (e.flash("errorobj", r), logger.log("error", "There was an error finding the user when a user tried to delete a phone number ", {
  1068.             Error: r,
  1069.             User: e.user.username,
  1070.             AffectedUser: e.params.name
  1071.         }), s.status(500), s.redirect("/")) : a ? phones.findOne({
  1072.             number: e.body.number,
  1073.             type: e.body.type
  1074.         }, function(r, o) {
  1075.             if (r) {
  1076.                 e.flash("errorobj", r), logger.log("error", "There was an error finding phone numbers when a user tried to delete a phone number ", {
  1077.                     Error: r,
  1078.                     User: e.user.username,
  1079.                     AffectedUser: e.params.name
  1080.                 }), s.status(500), s.redirect("/");
  1081.             } else {
  1082.                 if (o) {
  1083.                     if (1 == a.phones.length) {
  1084.                         e.flash("error", "You must have at least one phone number registered "), s.redirect("/profile/" + e.params.name);
  1085.                     } else {
  1086.                         var i = [], n = [];
  1087.                         a.phones.forEach(function(e) {
  1088.                             e + "" == o._id + "" ? n.push(e) : i.push(e);
  1089.                         }), a.previousphonenumbers.forEach(function(e) {
  1090.                             n.push(e);
  1091.                         }), users.update({
  1092.                             _id: a._id
  1093.                         }, {
  1094.                             phones: i,
  1095.                             previousphonenumbers: n
  1096.                         }, function(r, a, o) {
  1097.                             logger.log("transaction", "User phone number deletion status: ", {
  1098.                                 Error: r,
  1099.                                 Count: a,
  1100.                                 Status: o
  1101.                             }), r ? (logger.log("error", "There was an error when a user tried to delete a phone number ", {
  1102.                                 User: e.user.username,
  1103.                                 AffectedUser: e.params.name
  1104.                             }), e.flash("errorobj", r), s.status(500), s.redirect("/")) : (e.flash("success", "The phone number was successfully removed "),
  1105.                             s.redirect("/profile/" + e.params.name));
  1106.                         });
  1107.                     }
  1108.                 } else {
  1109.                     logger.log("error", "A user is trying to delete a phone number that does not exist ", {
  1110.                         User: e.user.username,
  1111.                         AffectedUser: e.params.name
  1112.                     }), e.flash("error", "The phone number you are trying to delete does not exist "),
  1113.                     s.redirect("/");
  1114.                 }
  1115.             }
  1116.         }) : (logger.log("error", "A user is trying to change a phone number for a user that does not exist ", {
  1117.             User: e.user.username,
  1118.             AffectedUser: e.params.name
  1119.         }), e.flash("error", "There is no user with the specified username "), s.redirect("/"));
  1120.     }) : (e.flash("error", "You do not have permission to change this phone number "),
  1121.     s.redirect("/"));
  1122. }
  1123.  
  1124. function addPhone(e, s, r) {
  1125.     var a = null;
  1126.     e.isAuthenticated() && e.user ? a = isOwn(e, e.params.name, e.user.username) : (e.flash("error", "You must be logged in to add a phone number "),
  1127.     s.redirect("/")), 1 == permissions.check(r, [ permissions.getFieldPermission("phones", a)[0] ]) ? users.findOne({
  1128.         username: e.params.name
  1129.     }, function(a, o) {
  1130.         a ? (logger.log("error", "There was an error when a user tried to add a phone number ", {
  1131.             Error: a,
  1132.             User: e.user.username,
  1133.             AffectedUser: e.params.name
  1134.         }), e.flash("errorobj", a), s.status(500), s.redirect("/")) : o ? null == e.body.newphone || void 0 == e.body.newphone || "" == e.body.newphone || null == e.body.type || void 0 == e.body.type || "" == e.body.type ? (e.flash("error", "The phone number you sent was invalid "),
  1135.         s.redirect("/profile/" + e.params.name)) : phones.findOne({
  1136.             number: e.body.newphone,
  1137.             type: e.body.type
  1138.         }, function(a, i) {
  1139.             if (a) {
  1140.                 e.flash("errorobj", a), logger.log("error", "There was an error finding phone numbers when a user tried to add a new phone number ", {
  1141.                     Error: a,
  1142.                     User: e.user.username,
  1143.                     AffectedUser: e.params.name
  1144.                 }), s.status(500), s.redirect("/");
  1145.             } else {
  1146.                 if (i) {
  1147.                     saveNewPhoneNumber(e, s, r, o, i);
  1148.                 } else {
  1149.                     var n = new phones({
  1150.                         number: e.body.newphone,
  1151.                         type: e.body.type
  1152.                     });
  1153.                     n.save(function(a, i) {
  1154.                         a ? (e.flash("errorobj", a), logger.log("error", "There was an error saving a new phone number when a user tried to add a phone number ", {
  1155.                             Error: a,
  1156.                             User: e.user.username,
  1157.                             AffectedUser: e.params.user
  1158.                         }), s.status(500), s.redirect("/")) : saveNewPhoneNumber(e, s, r, o, i);
  1159.                     });
  1160.                 }
  1161.             }
  1162.         }) : (logger.log("error", "A user is trying to change a phone number for a user that does not exist ", {
  1163.             User: e.user.username,
  1164.             AffectedUser: e.params.name
  1165.         }), e.flash("error", "There is no user with the specified username "), s.redirect("/"));
  1166.     }) : (e.flash("error", "You do not have permission to add this phone number "),
  1167.     s.redirect("/"));
  1168. }
  1169.  
  1170. function saveNewPhoneNumber(e, s, r, a, o) {
  1171.     var i = a.phones;
  1172.     i.push(o._id), users.update({
  1173.         _id: a._id
  1174.     }, {
  1175.         phones: i
  1176.     }, function(r, a, o) {
  1177.         logger.log("transaction", "User phone number change status: ", {
  1178.             Error: r,
  1179.             Count: a,
  1180.             Status: o
  1181.         }), r ? (e.flash("errorobj", r), logger.log("error", "There was an error when a user tried to change a phone number "),
  1182.         s.status(500), s.redirect("/")) : (e.flash("success", "Your phone number was added successfully "),
  1183.         s.redirect("/profile/" + e.params.name));
  1184.     });
  1185. }
  1186.  
  1187. function changeData(e, s, r) {
  1188.     var a = null, o = {};
  1189.     e.isAuthenticated() && e.user ? a = isOwn(e, e.params.name, e.user.username) : (e.flash("error", "You must be logged in to change user data "),
  1190.     s.redirect("/")), null == a ? (e.flash("error", "You must be logged in to change user data "),
  1191.     s.redirect("/")) : users.findOne({
  1192.         username: e.params.name
  1193.     }, function(i, n) {
  1194.         i ? (logger.log("error", "There was an error when a user tried to delete an email ", {
  1195.             Error: i,
  1196.             User: e.user.username,
  1197.             AffectedUser: e.params.name
  1198.         }), o.findUserError = i, e.flash("errorobj", o), s.redirect("/")) : n ? e.body ? findUserValues(e, s, r, o, "A user tried to edit a user's data ", [ n.address ], n.previousaddresses, n.dates, n.roles, n.previousroles, n.payments, [ n.name ], n.previousnames, n.phones, n.previousphonenumbers, function(e, s, r, o, i, t, u, d, m, l, p, c, h, f, g, y) {
  1199.             null == e.body.namefirstname || void 0 == e.body.namefirstname || "" == e.body.namefirstname || null == e.body.namesurname || void 0 == e.body.namesurname || "" == e.body.namesurname ? (o.changeNameUndefinedFields = "Some name fields that are required (firstname and surname) were not filled in ",
  1200.             changeData2(e, s, n, r, a, o, i, t, u, d, m, l, p, c, h, f, g, y)) : e.body.nametitle != f[0].title || e.body.namefirstname != f[0].firstname || e.body.namemiddlenames != f[0].middlenames || e.body.namesurname != f[0].surname ? 1 == permissions.check(r, [ permissions.getFieldPermission("name", a)[0] ]) ? names.findOne({
  1201.                 title: e.body.nametitle,
  1202.                 firstname: e.body.namefirstname,
  1203.                 middlenames: e.body.namemiddlenames,
  1204.                 surname: e.body.namesurname
  1205.             }, function(f, v) {
  1206.                 if (f) {
  1207.                     logger.log("error", "There was an error when trying to find a name when a user tried to update its data "),
  1208.                     error.findNameError = f, e.flash("errorobj", f), s.status(500), s.redirect("/");
  1209.                 } else {
  1210.                     if (v) {
  1211.                         var b = null;
  1212.                         b = null == n.previousnames || void 0 == n.previousnames ? [] : n.previousnames,
  1213.                         b.push(n.name), users.update({
  1214.                             _id: n._id
  1215.                         }, {
  1216.                             previousnames: b,
  1217.                             name: v._id
  1218.                         }, function(f, b, w) {
  1219.                             logger.log("transaction", "Names update status: ", {
  1220.                                 Error: f,
  1221.                                 Count: b,
  1222.                                 Status: w
  1223.                             }), f ? (logger.log("error", "There was an error when updating a user's name "),
  1224.                             o.updateNameError = f, e.flash("errorobj", f), s.status(500), s.redirect("/")) : changeData2(e, s, n, r, a, o, i, t, u, d, m, l, p, c, h, v, g, y);
  1225.                         });
  1226.                     } else {
  1227.                         var w = new names({
  1228.                             title: e.body.nametitle,
  1229.                             firstname: e.body.namefirstname,
  1230.                             middlenames: e.body.namemiddlenames,
  1231.                             surname: e.body.namesurname
  1232.                         });
  1233.                         w.save(function(f, v) {
  1234.                             if (f) {
  1235.                                 logger.log("error", "There was an error when saving a new name whan a user tried to update a user's name "),
  1236.                                 o.saveNameError = f, e.flash("errorobj", o), s.status(500), s.redirect("/");
  1237.                             } else {
  1238.                                 var b = null;
  1239.                                 b = null == n.previousnames || void 0 == n.previousnames ? [] : n.previousnames,
  1240.                                 b.push(n.name), users.update({
  1241.                                     _id: n._id
  1242.                                 }, {
  1243.                                     previousnames: b,
  1244.                                     name: v._id
  1245.                                 }, function(f, b, w) {
  1246.                                     logger.log("transaction", "Names update status: ", {
  1247.                                         Error: f,
  1248.                                         Count: b,
  1249.                                         Status: w
  1250.                                     }), f ? (logger.log("error", "There was an error when updating a user's name "),
  1251.                                     o.updateNameError = f, e.flash("errorobj", f), s.status(500), s.redirect("/")) : changeData2(e, s, n, r, a, o, i, t, u, d, m, l, p, c, h, v, g, y);
  1252.                                 });
  1253.                             }
  1254.                         });
  1255.                     }
  1256.                 }
  1257.             }) : (o.changeNameNoPermissions = "You do not have permission to change this user's name ",
  1258.             changeData2(e, s, n, r, a, o, i, t, u, d, m, l, p, c, h, f, g, y)) : changeData2(e, s, n, r, a, o, i, t, u, d, m, l, p, c, h, f, g, y);
  1259.         }) : (logger.log("error", "A user is trying to change data for a user but sent no form data ", {
  1260.             User: e.user.username,
  1261.             AffectedUser: e.params.name
  1262.         }), e.flash("error", "No form data was sent "), s.redirect("/")) : (logger.log("error", "A user is trying to change data for a user that does not exist ", {
  1263.             User: e.user.username,
  1264.             AffectedUser: e.params.name
  1265.         }), e.flash("error", "There is no user with the specified username "), s.redirect("/"));
  1266.     });
  1267. }
  1268.  
  1269. function changeData2(e, s, r, a, o, i, n, t, u, d, m, l, p, c, h, f, g, y) {
  1270.     null == e.body.addressline1 || void 0 == e.body.addressline1 || "" == e.body.addressline1 || null == e.body.addresstown || void 0 == e.body.addresstown || "" == e.body.addresstown || null == e.body.addresscounty || void 0 == e.body.addresscounty || "" == e.body.addresscounty || null == e.body.addresscountry || void 0 == e.body.addresscountry || "" == e.body.addresscountry || null == e.body.addresspostcode || void 0 == e.body.addresspostcode || "" == e.body.addresspostcode ? (i.changeAddressUndefinedFields = "Some adddress fields that are required were not filled in ",
  1271.     changeData3(e, s, r, a, o, i, n, t, u, d, m, l, p, c, h, f, g, y)) : e.body.addressline1 != n[0].line1 || e.body.addressline2 != n[0].line2 || e.body.addressline3 != n[0].line3 || e.body.addressotherlines != n[0].otherlines || e.body.addresstown != n[0].town || e.body.addresscounty != n[0].county || e.body.addresscountry != n[0].country || e.body.addresspostcode != n[0].postcode ? 1 == permissions.check(a, [ permissions.getFieldPermission("address", o)[0] ]) ? addresses.findOne({
  1272.         line1: e.body.addressline1,
  1273.         line2: e.body.addressline2,
  1274.         line3: e.body.addressline3,
  1275.         otherlines: e.body.addressotherlines,
  1276.         town: e.body.addresstown,
  1277.         county: e.body.addresscounty,
  1278.         country: e.body.addresscountry,
  1279.         postcode: e.body.addresspostcode
  1280.     }, function(n, v) {
  1281.         if (n) {
  1282.             logger.log("error", "There was an error when trying to find an address when a user tried to update its data "),
  1283.             error.findAddressError = n, e.flash("errorobj", n), s.status(500), s.redirect("/");
  1284.         } else {
  1285.             if (v) {
  1286.                 var b = null;
  1287.                 b = null == r.previousaddresses || void 0 == r.previousaddresses ? [] : r.previousaddresses,
  1288.                 b.push(r.address), users.update({
  1289.                     _id: r._id
  1290.                 }, {
  1291.                     previousaddresses: b,
  1292.                     address: v._id
  1293.                 }, function(n, b, w) {
  1294.                     logger.log("transaction", "Addresses update status: ", {
  1295.                         Error: n,
  1296.                         Count: b,
  1297.                         Status: w
  1298.                     }), n ? (logger.log("error", "There was an error when updating a user's address "),
  1299.                     i.updateAddressError = n, e.flash("errorobj", n), s.status(500), s.redirect("/")) : changeData3(e, s, r, a, o, i, v, t, u, d, m, l, p, c, h, f, g, y);
  1300.                 });
  1301.             } else {
  1302.                 var w = new addresses({
  1303.                     line1: e.body.addressline1,
  1304.                     line2: e.body.addressline2,
  1305.                     line3: e.body.addressline3,
  1306.                     otherlines: e.body.addressotherlines,
  1307.                     town: e.body.addresstown,
  1308.                     county: e.body.addresscounty,
  1309.                     country: e.body.addresscountry,
  1310.                     postcode: e.body.addresspostcode
  1311.                 });
  1312.                 w.save(function(n, v) {
  1313.                     if (n) {
  1314.                         logger.log("error", "There was an error when saving a new address whan a user tried to update a user's address "),
  1315.                         i.saveAddressError = n, e.flash("errorobj", i), s.status(500), s.redirect("/");
  1316.                     } else {
  1317.                         var b = null;
  1318.                         b = null == r.previousaddresses || void 0 == r.previousaddresses ? [] : r.previousaddresses,
  1319.                         b.push(r.address), users.update({
  1320.                             _id: r._id
  1321.                         }, {
  1322.                             previousaddresses: b,
  1323.                             address: v._id
  1324.                         }, function(n, b, w) {
  1325.                             logger.log("transaction", "Addresses update status: ", {
  1326.                                 Error: n,
  1327.                                 Count: b,
  1328.                                 Status: w
  1329.                             }), n ? (logger.log("error", "There was an error when updating a user's address "),
  1330.                             i.updateAddressError = n, e.flash("errorobj", n), s.status(500), s.redirect("/")) : changeData3(e, s, r, a, o, i, v, t, u, d, m, l, p, c, h, f, g, y);
  1331.                         });
  1332.                     }
  1333.                 });
  1334.             }
  1335.         }
  1336.     }) : (i.changeNameNoPermissions = "You do not have permission to change this user's name ",
  1337.     changeData3(e, s, r, a, o, i, n, t, u, d, m, l, p, c, h, f, g, y)) : changeData3(e, s, r, a, o, i, n, t, u, d, m, l, p, c, h, f, g, y);
  1338. }
  1339.  
  1340. function changeData3(e, s, r, a, o, i, n, t, u, d, m, l, p, c, h, f, g, y) {
  1341.     if (e.body.BAA + "" != r.BAA + "") {
  1342.         if (1 == permissions.check(a, [ permissions.getFieldPermission("BAA", o)[0] ])) {
  1343.             var v = null;
  1344.             e.body.BAA + "" == "true" ? v = !0 : e.body.BAA + "" == "false" ? v = !1 : (i.BAAStatusInvalidValue = "You must either be a member of the British Astronomical Assocsiation or you must not; the value given was neither ",
  1345.             changeData4(e, s, r, a, o, i, n, t, u, d, m, l, p, c, h, f, g, y)), null !== v && users.update({
  1346.                 _id: r._id
  1347.             }, {
  1348.                 BAA: v
  1349.             }, function(v, b, w) {
  1350.                 logger.log("transaction", "BAA update status: ", {
  1351.                     Error: v,
  1352.                     Count: b,
  1353.                     Status: w
  1354.                 }), v ? (logger.log("error", "There was an error when updating a user's BAA status "),
  1355.                 i.updateBAAStatusError = v, e.flash("errorobj", v), s.status(500), s.redirect("/")) : changeData4(e, s, r, a, o, i, n, t, u, d, m, l, p, c, h, f, g, y);
  1356.             });
  1357.         } else {
  1358.             i.changeBAANoPermissions = "You do not have permission to change this user's BAA status ",
  1359.             changeData4(e, s, r, a, o, i, n, t, u, d, m, l, p, c, h, f, g, y);
  1360.         }
  1361.     } else {
  1362.         changeData4(e, s, r, a, o, i, n, t, u, d, m, l, p, c, h, f, g, y);
  1363.     }
  1364. }
  1365.  
  1366. function changeData4(e, s, r, a, o, i, n, t, u, d, m, l, p, c, h, f, g, y) {
  1367.     if (e.body.FRAS + "" != r.FRAS + "") {
  1368.         if (1 == permissions.check(a, [ permissions.getFieldPermission("FRAS", o)[0] ])) {
  1369.             var v = null;
  1370.             e.body.FRAS + "" == "true" ? v = !0 : e.body.FRAS + "" == "false" ? v = !1 : (i.FRASStatusInvalidValue = "You must either be a fellow of the Royal Astronomical Society or you must not; the value given was neither ",
  1371.             changeData5(e, s, r, a, o, i, n, t, u, d, m, l, p, c, h, f, g, y)), null !== v && users.update({
  1372.                 _id: r._id
  1373.             }, {
  1374.                 FRAS: v
  1375.             }, function(v, b, w) {
  1376.                 logger.log("transaction", "FRAS update status: ", {
  1377.                     Error: v,
  1378.                     Count: b,
  1379.                     Status: w
  1380.                 }), v ? (logger.log("error", "There was an error when updating a user's FRAS status "),
  1381.                 i.updateFRASStatusError = v, e.flash("errorobj", v), s.status(500), s.redirect("/")) : changeData5(e, s, r, a, o, i, n, t, u, d, m, l, p, c, h, f, g, y);
  1382.             });
  1383.         } else {
  1384.             i.changeFRASNoPermissions = "You do not have permission to change this user's FRAS status ",
  1385.             changeData5(e, s, r, a, o, i, n, t, u, d, m, l, p, c, h, f, g, y);
  1386.         }
  1387.     } else {
  1388.         changeData5(e, s, r, a, o, i, n, t, u, d, m, l, p, c, h, f, g, y);
  1389.     }
  1390. }
  1391.  
  1392. function changeData5(e, s, r, a, o, i, n, t, u, d, m, l, p, c, h, f, g, y) {
  1393.     if (null == e.body.refractortest || void 0 == e.body.refractortest || "" == e.body.refractortest) {
  1394.         changeData6(e, s, r, a, o, i, n, t, u, d, m, l, p, c, h, f, g, y);
  1395.     } else {
  1396.         if (e.body.refractortest + "" != r.refractortest + "") {
  1397.             if (1 == permissions.check(a, [ permissions.getFieldPermission("refractortest", o)[0] ])) {
  1398.                 var v = null;
  1399.                 if (e.body.refractortest + "" == "true" ? v = !0 : e.body.refractortest + "" == "false" ? v = !1 : (i.refractorTestInvalidValue = "you must either have passed the refractor test or have failed it; the value given was neither ",
  1400.                 changeData6(e, s, r, a, o, i, n, t, u, d, m, l, p, c, h, f, g, y)), null !== v) {
  1401.                     if (v === !1) {
  1402.                         users.update({
  1403.                             _id: r._id
  1404.                         }, {
  1405.                             refractortest: v
  1406.                         }, function(v, b, w) {
  1407.                             logger.log("transaction", "Refractor test update status: ", {
  1408.                                 Error: v,
  1409.                                 Count: b,
  1410.                                 Status: w
  1411.                             }), v ? (logger.log("error", "There was an error when updating a user's refractor test status "),
  1412.                             i.updateRefractorTestStatusError = v, e.flash("errorobj", v), s.status(500), s.redirect("/")) : changeData6(e, s, r, a, o, i, n, t, u, d, m, l, p, c, h, f, g, y);
  1413.                         });
  1414.                     } else {
  1415.                         var b = makeDate(new Date(), dateTypes[4]);
  1416.                         dates.findOne(b, function(w, _) {
  1417.                             if (w) {
  1418.                                 logger.log("error", "There was an error when finding a refractor test pass date ", {
  1419.                                     Error: w,
  1420.                                     User: e.user.username,
  1421.                                     AffectedUser: e.params.name
  1422.                                 }), e.flash("error", "There was an error validating the refractor test pass date "),
  1423.                                 s.status(500), s.redirect("/");
  1424.                             } else {
  1425.                                 if (_) {
  1426.                                     var A = r.dates;
  1427.                                     A.push(_._id), users.update({
  1428.                                         _id: r._id
  1429.                                     }, {
  1430.                                         refractortest: v,
  1431.                                         dates: A
  1432.                                     }, function(v, b, w) {
  1433.                                         logger.log("transaction", "Refractor test update status: ", {
  1434.                                             Error: v,
  1435.                                             Count: b,
  1436.                                             Status: w
  1437.                                         }), v ? (logger.log("error", "There was an error when updating a user's refractor test status "),
  1438.                                         i.updateRefractorTestStatusError = v, e.flash("errorobj", v), s.status(500), s.redirect("/")) : changeData6(e, s, r, a, o, i, n, t, u, d, m, l, p, c, h, f, g, y);
  1439.                                     });
  1440.                                 } else {
  1441.                                     var k = new dates(b);
  1442.                                     k.save(function(b, w) {
  1443.                                         if (b) {
  1444.                                             logger.log("error", "there was an error when saving a new refractor test pass date ", {
  1445.                                                 Error: b,
  1446.                                                 User: e.user.username,
  1447.                                                 AffectedUser: e.params.name
  1448.                                             }), e.flash("error", "There was an error saving the new refractor test pass date "),
  1449.                                             s.status(500), s.redirect("/");
  1450.                                         } else {
  1451.                                             var _ = r.dates;
  1452.                                             _.push(w._id), users.update({
  1453.                                                 _id: r._id
  1454.                                             }, {
  1455.                                                 refractortest: v,
  1456.                                                 dates: _
  1457.                                             }, function(v, b, w) {
  1458.                                                 logger.log("transaction", "Refractor test update status: ", {
  1459.                                                     Error: v,
  1460.                                                     Count: b,
  1461.                                                     Status: w
  1462.                                                 }), v ? (logger.log("error", "There was an error when updating a user's refractor test status "),
  1463.                                                 i.updateRefractorTestStatusError = v, e.flash("errorobj", v), s.status(500), s.redirect("/")) : changeData6(e, s, r, a, o, i, n, t, u, d, m, l, p, c, h, f, g, y);
  1464.                                             });
  1465.                                         }
  1466.                                     });
  1467.                                 }
  1468.                             }
  1469.                         });
  1470.                     }
  1471.                 }
  1472.             } else {
  1473.                 i.refractorTestNoPermissions = "You do not have permission to change this user's refractor test pass status ",
  1474.                 changeData6(e, s, r, a, o, i, n, t, u, d, m, l, p, c, h, f, g, y);
  1475.             }
  1476.         } else {
  1477.             changeData6(e, s, r, a, o, i, n, t, u, d, m, l, p, c, h, f, g, y);
  1478.         }
  1479.     }
  1480. }
  1481.  
  1482. function changeData6(e, s, r, a, o, i) {
  1483.     logger.log("debug", Object.keys(e.body) + ""), e.flash("errorobj", i), 0 != Object.keys(i).length ? e.flash("info", "Your profile was updated but some fields could not be updated ") : e.flash("success", "Your profile was updated successfully "),
  1484.     s.redirect("/profile/" + e.params.name);
  1485. }
  1486.  
  1487. function membershipDetails(e, s, r) {
  1488.     var a = isOwn(e, e.user.username, e.params.name);
  1489.     membershipPermissions = 0, a === !0 ? (membershipPermissions += 6, permissions.check(r, [ permissionsList.permissions.delete_own ]) && (membershipPermissions += 1)) : (1 == permissions.check(r, [ permissionsList.permissions.delete_any ]) && (membershipPermissions += 1),
  1490.     1 == permissions.check(r, [ permissionsList.permissions.membership ]) && (membershipPermissions += 2),
  1491.     1 == permissions.check(r, [ permissionsList.permissions.edit_username ]) && (membershipPermissions += 4)),
  1492.     membershipPermissions > 0 ? users.findOne({
  1493.         username: e.params.name
  1494.     }, function(r, a) {
  1495.         r ? (e.flash("errorobj", r), logger.log("error", "An error was encountered when a user tried to view user membership information ", {
  1496.             Error: r,
  1497.             User: e.user.username,
  1498.             Viewed: e.params.name
  1499.         }), s.redirect("/")) : a ? (e.flash("info", "This page shows private membership status information "),
  1500.         s.render(path.resolve("./views/membership"), {
  1501.             title: e.params.name + " Membership",
  1502.             styles: [],
  1503.             scripts: [ "makeURL.js", "membership.js" ],
  1504.             username: e.params.name,
  1505.             membershipStatus: a.membershipapproved + "",
  1506.             renew: renewAccounts + "",
  1507.             statusMeanings: STATUSNUMBERMEANINGS,
  1508.             permissions: membershipPermissions
  1509.         })) : (e.flash("error", "There is no user with the username you specified "), s.redirect("/"));
  1510.     }) : (e.flash("error", "You do not have permission to view this page "), s.redirect("/"));
  1511. }
  1512.  
  1513. function adminChangeMembership(e, s, r) {
  1514.     var a = "There was an error saving the changed membership status ";
  1515.     e.body ? e.body.username ? users.findOne({
  1516.         username: e.body.username
  1517.     }, function(o, i) {
  1518.         if (o) {
  1519.             logger.log("error", FINDUSERERR, {
  1520.                 Error: o,
  1521.                 User: e.user.username,
  1522.                 AffectedUser: e.body.username
  1523.             }), e.flash("error", "There was an error retrieving the required user acount "),
  1524.             s.redirect("/");
  1525.         } else {
  1526.             if (i) {
  1527.                 if ("exempt" == e.params.data) {
  1528.                     if (1 == permissions.check(r, [ permissionsList.permissions.membership ]) && e.user) {
  1529.                         var n = -1;
  1530.                         6 == i.membershipapproved ? (e.flash("error", "You cannot make a suspended account exempt "),
  1531.                         s.redirect("/admin/membership")) : n = 7 == i.membershipapproved ? 4 : 7, logger.log("debug", "Membership status: " + (n + "")),
  1532.                         n > -1 && users.update({
  1533.                             username: e.body.username
  1534.                         }, {
  1535.                             membershipapproved: n
  1536.                         }, function(r, o, i) {
  1537.                             logger.log("transaction", "User account membership status update status: ", {
  1538.                                 Error: r,
  1539.                                 Count: o,
  1540.                                 Status: i
  1541.                             }), r ? (logger.log("error", "There was an error when a user tried to update a user's membership status ", {
  1542.                                 User: e.user.username,
  1543.                                 AffectedUser: e.body.username
  1544.                             }), e.flash("error", a), s.status(500), s.redirect("/")) : (e.flash("success", "User membership status updated successfully "),
  1545.                             s.redirect("/admin/membership"));
  1546.                         });
  1547.                     } else {
  1548.                         e.flash("error", "You do not have permission to make a user exempt "), s.redirect("/admin/membership");
  1549.                     }
  1550.                 } else {
  1551.                     if ("pay" == e.params.data) {
  1552.                         if (1 == permissions.check(r, [ permissionsList.permissions.membership ]) && e.user) {
  1553.                             var n = -1;
  1554.                             6 == i.membershipapproved || 8 == i.membershipapproved ? (e.flash("error", "You cannot change the payment status for a suspended account "),
  1555.                             s.redirect("/admin/membership")) : 7 == i.membershipapproved ? (e.flash("error", "You cannot change the payment status for an exempt account "),
  1556.                             s.redirect("/admin/membership")) : 0 == i.membershipapproved || 3 == i.membershipapproved ? (e.flash("error", "This user has not requested to renew its membership "),
  1557.                             s.redirect("/admin/membership")) : 1 == i.membershipapproved || 4 == i.membershipapproved ? n = 1 == renewAccounts ? 5 : 2 : (2 == i.membershipapproved || 5 == i.membershipapproved) && (n = i.membershipapproved - 1),
  1558.                             n > -1 && users.update({
  1559.                                 username: e.body.username
  1560.                             }, {
  1561.                                 membershipapproved: n
  1562.                             }, function(r, o, i) {
  1563.                                 logger.log("transaction", "User account membership status update status: ", {
  1564.                                     Error: r,
  1565.                                     Count: o,
  1566.                                     Status: i
  1567.                                 }), r ? (logger.log("error", "There was an error when updating a user acount's membership status ", {
  1568.                                     User: e.user.username,
  1569.                                     AffectedUser: e.body.username
  1570.                                 }), e.flash("error", a), s.status(500), s.redirect("/")) : (e.flash("success", "User membership status updated successfully "),
  1571.                                 s.redirect("/admin/membership"));
  1572.                             });
  1573.                         } else {
  1574.                             e.flash("error", "You do not have permission to change a user's payment status "),
  1575.                             s.redirect("/");
  1576.                         }
  1577.                     } else {
  1578.                         if ("unsuspend" == e.params.data) {
  1579.                             if (1 == permissions.check(r, [ permissionsList.permissions.membership, permissionsList.permissions.delete_any ]) && e.user) {
  1580.                                 if (6 != i.membershipapproved) {
  1581.                                     e.flash("error", "The account you are trying to re-enable is not suspended "), s.redirect("/admin/membership");
  1582.                                 } else {
  1583.                                     var t = makeDate(new Date(), dateTypes[0]);
  1584.                                     dates.findOne(t, function(r, o) {
  1585.                                         if (r) {
  1586.                                             logger.log("error", "There was an error when finding the date when the user acount became unsuspended ", {
  1587.                                                 Error: r,
  1588.                                                 User: e.user.username,
  1589.                                                 AffectedUser: e.body.username
  1590.                                             }), e.flash("error", "There was an error getting the date of the end of the account's suspension "),
  1591.                                             s.ststus(500), s.redirect("/");
  1592.                                         } else {
  1593.                                             if (o) {
  1594.                                                 var n = i.dates;
  1595.                                                 n.push(o._id), users.update({
  1596.                                                     username: e.body.username
  1597.                                                 }, {
  1598.                                                     membershipapproved: 4,
  1599.                                                     dates: n
  1600.                                                 }, function(r, o, i) {
  1601.                                                     logger.log("transaction", "User account membership status update status: ", {
  1602.                                                         Error: r,
  1603.                                                         Count: o,
  1604.                                                         Status: i
  1605.                                                     }), r ? (logger.log("error", "There was an error when updating a user acount's membership status ", {
  1606.                                                         User: e.user.username,
  1607.                                                         AffectedUser: e.body.username
  1608.                                                     }), e.flash("error", a), s.status(500), s.redirect("/")) : (e.flash("success", "User membership status updated successfully "),
  1609.                                                     s.redirect("/admin/membership"));
  1610.                                                 });
  1611.                                             } else {
  1612.                                                 var u = new dates(t);
  1613.                                                 u.save(function(r, o) {
  1614.                                                     if (r) {
  1615.                                                         logger.log("error", "There was an error saving a new user rejoin date ", {
  1616.                                                             Error: r,
  1617.                                                             User: e.user.username,
  1618.                                                             AffectedUser: e.body.username
  1619.                                                         }), e.flash("error", "There was an error validating the account unsuspension date "),
  1620.                                                         s.ststus(500), s.redirect("/");
  1621.                                                     } else {
  1622.                                                         var n = i.dates;
  1623.                                                         n.push(o._id), users.update({
  1624.                                                             username: e.body.username
  1625.                                                         }, {
  1626.                                                             membershipapproved: 4,
  1627.                                                             dates: n
  1628.                                                         }, function(r, o, i) {
  1629.                                                             logger.log("transaction", "User account membership status update status: ", {
  1630.                                                                 Error: r,
  1631.                                                                 Count: o,
  1632.                                                                 Status: i
  1633.                                                             }), r ? (logger.log("error", "There was an error when updating a user acount's membership status ", {
  1634.                                                                 User: e.user.username,
  1635.                                                                 AffectedUser: e.body.username
  1636.                                                             }), e.flash("error", a), s.status(500), s.redirect("/")) : (e.flash("success", "User membership status updated successfully "),
  1637.                                                             s.redirect("/admin/membership"));
  1638.                                                         });
  1639.                                                     }
  1640.                                                 });
  1641.                                             }
  1642.                                         }
  1643.                                     });
  1644.                                 }
  1645.                             } else {
  1646.                                 e.flash("error", "You do not have permission to unsuspend an account "), s.redirect("/");
  1647.                             }
  1648.                         } else {
  1649.                             if ("disable" == e.params.data) {
  1650.                                 if (permissions.check(r, permissionsList.permissions.permenantly_suspend)) {
  1651.                                     if (8 != i.membershipapproved) {
  1652.                                         if (6 === i.membershipapproved) {
  1653.                                             users.update({
  1654.                                                 username: e.body.username
  1655.                                             }, {
  1656.                                                 membershipapproved: 8
  1657.                                             }, function(r, o, i) {
  1658.                                                 logger.log("transaction", "User account membership status update status: ", {
  1659.                                                     Error: r,
  1660.                                                     Count: o,
  1661.                                                     Status: i
  1662.                                                 }), r ? (logger.log("error", "There was an error when updating a user acount's membership status ", {
  1663.                                                     User: e.user.username,
  1664.                                                     AffectedUser: e.body.username
  1665.                                                 }), e.flash("error", a), s.status(500), s.redirect("/")) : (e.flash("success", "User membership status updated successfully "),
  1666.                                                 s.redirect(e.user.username == e.body.username ? "/logout" : "/admin/membership"));
  1667.                                             });
  1668.                                         } else {
  1669.                                             var u = makeDate(new Date(), dateTypes[1]);
  1670.                                             dates.findOne(u, function(r, o) {
  1671.                                                 if (r) {
  1672.                                                     logger.log("error", "There was an error when finding the date when the user acount became disabled ", {
  1673.                                                         Error: r,
  1674.                                                         User: e.user.username,
  1675.                                                         AffectedUser: e.body.username
  1676.                                                     }), e.flash("error", "There was an error getting the date when the account was disabled "),
  1677.                                                     s.ststus(500), s.redirect("/");
  1678.                                                 } else {
  1679.                                                     if (o) {
  1680.                                                         var n = i.dates;
  1681.                                                         n.push(o._id), console.log("Found "), console.log(n), users.update({
  1682.                                                             username: e.body.username
  1683.                                                         }, {
  1684.                                                             membershipapproved: 8,
  1685.                                                             dates: n
  1686.                                                         }, function(r, o, i) {
  1687.                                                             logger.log("transaction", "User account membership status update status: ", {
  1688.                                                                 Error: r,
  1689.                                                                 Count: o,
  1690.                                                                 Status: i
  1691.                                                             }), r ? (logger.log("error", "There was an error when updating a user acount's membership status ", {
  1692.                                                                 User: e.user.username,
  1693.                                                                 AffectedUser: e.body.username
  1694.                                                             }), e.flash("error", a), s.status(500), s.redirect("/")) : (e.flash("success", "User membership status updated successfully "),
  1695.                                                             s.redirect(e.user.username == e.body.username ? "/logout" : "/admin/membership"));
  1696.                                                         });
  1697.                                                     } else {
  1698.                                                         var t = new dates(u);
  1699.                                                         t.save(function(r, o) {
  1700.                                                             if (r) {
  1701.                                                                 logger.log("error", "There was an error saving a new user account disabled date ", {
  1702.                                                                     Error: r,
  1703.                                                                     User: e.user.username,
  1704.                                                                     AffectedUser: e.body.username
  1705.                                                                 }), e.flash("error", "There was an error validating the account disabled date "),
  1706.                                                                 s.ststus(500), s.redirect("/");
  1707.                                                             } else {
  1708.                                                                 var n = i.dates;
  1709.                                                                 n.push(o._id), console.log("SAVED "), console.log(n), users.update({
  1710.                                                                     username: e.body.username
  1711.                                                                 }, {
  1712.                                                                     membershipapproved: 8,
  1713.                                                                     dates: n
  1714.                                                                 }, function(r, o, i) {
  1715.                                                                     logger.log("transaction", "User account membership status update status: ", {
  1716.                                                                         Error: r,
  1717.                                                                         Count: o,
  1718.                                                                         Status: i
  1719.                                                                     }), r ? (logger.log("error", "There was an error when updating a user acount's membership status ", {
  1720.                                                                         User: e.user.username,
  1721.                                                                         AffectedUser: e.body.username
  1722.                                                                     }), e.flash("error", a), s.status(500), s.redirect("/")) : (e.flash("success", "User membership status updated successfully "),
  1723.                                                                     s.redirect(e.user.username == e.body.username ? "/logout" : "/admin/membership"));
  1724.                                                                 });
  1725.                                                             }
  1726.                                                         });
  1727.                                                     }
  1728.                                                 }
  1729.                                             });
  1730.                                         }
  1731.                                     } else {
  1732.                                         users.update({
  1733.                                             username: e.body.username
  1734.                                         }, {
  1735.                                             membershipapproved: 6
  1736.                                         }, function(r, o, i) {
  1737.                                             logger.log("transaction", "User account membership status update status: ", {
  1738.                                                 Error: r,
  1739.                                                 Count: o,
  1740.                                                 Status: i
  1741.                                             }), r ? (logger.log("error", "There was an error when updating a user acount's membership status ", {
  1742.                                                 User: e.user.username,
  1743.                                                 AffectedUser: e.body.username
  1744.                                             }), e.flash("error", a), s.status(500), s.redirect("/")) : (e.flash("success", "User membership status updated successfully "),
  1745.                                             e.flash("info", "to re-enable the accountf ully, click the button to unsuspend it "),
  1746.                                             s.redirect("/admin/membership"));
  1747.                                         });
  1748.                                     }
  1749.                                 } else {
  1750.                                     e.flash("You do not have permission to disable an account "), s.redirect("/");
  1751.                                 }
  1752.                             } else {
  1753.                                 e.flash("error", "The datum you specified to edit was not a valid sort "), s.redirect("/admin/membership");
  1754.                             }
  1755.                         }
  1756.                     }
  1757.                 }
  1758.             } else {
  1759.                 e.flash("error", "There is no user with the username you specified "), s.redirect("/admin/membership");
  1760.             }
  1761.         }
  1762.     }) : (e.flash("error", "You did not send the username of the user to edit "), s.redirect("/admin/membership")) : (e.flash("error", "You did not send any data "),
  1763.     s.redirect("/admin/membership"));
  1764. }
  1765.  
  1766. const ERRMSG = "There was an error when finding ", SUSACCERR = "There was an error when a user tried to suspend an account ", FINDUSERERR = "There was an error when trying to retrieve a user account ", STATUSNUMBERMEANINGS = {
  1767.     "0": "You have not requested to join properly ",
  1768.     "1": "Your membership is awaiting payment ",
  1769.     "2": "You are a fully payed member ",
  1770.     "3": "You have not renewed your membership ",
  1771.     "4": "You have not payed to renew your membership ",
  1772.     "5": "You have renewed your membership ",
  1773.     "6": "You are not a member ",
  1774.     "7": "You never need to pay ",
  1775.     "8": "You account was permenantly suspended "
  1776. };
  1777.  
  1778. var users = null, dates = null, addresses = null, payments = null, roles = null, roles_description = null, names = null, phones = null, path = null, userKeys = null, permissions = null, permissionsList = null, dateTypes = null, logger = null, bcrypt = null, makePassword = null, makeDate = null, usernameBlacklist = null, charactersBlacklist = null, renewAccounts = null, user_messages = null, capitalise = null, async = null, keys = {};
  1779.  
  1780. exports.init = function(e, s, r, a, o, i, n, t, u, d, m, l, p, c, h, f, g, y, v, b, w, _, A) {
  1781.     users = e, dates = s, addresses = r, payments = a, roles = o, roles_description = i,
  1782.     names = n, phones = t, path = u, userKeys = d, permissions = m, permissionsList = l,
  1783.     dateTypes = p, logger = c, bcrypt = h, makePassword = f, makeDate = g, usernameBlacklist = y,
  1784.     charactersBlacklist = v, renewAccounts = b, user_messages = w, capitalise = _, async = A,
  1785.     keys = {
  1786.         address: Object.keys(addresses.schema.paths),
  1787.         dates: Object.keys(dates.schema.paths),
  1788.         payments: Object.keys(payments.schema.paths),
  1789.         roles: Object.keys(roles.schema.paths),
  1790.         roles_description: Object.keys(roles_description.schema.paths),
  1791.         name: Object.keys(names.schema.paths),
  1792.         phones: Object.keys(phones.schema.paths)
  1793.     };
  1794. }, exports.myProfile = function(e, s) {
  1795.     if (e.isAuthenticated()) {
  1796.         var r = e.user.username;
  1797.         s.redirect("/profile/" + (r + ""));
  1798.     } else {
  1799.         e.flash("error", "You must be logged in to view that page "), s.redirect("/");
  1800.     }
  1801. }, exports.getProfile = function(e, s) {
  1802.     logger.log("action", "A user is trying to view a user profile "), permissions.getUserPermissions(e, s, retrieveProfile);
  1803. }, exports.listProfiles = function(e, s) {
  1804.     permissions.getUserPermissions(e, s, function(e, s, r) {
  1805.         showProfiles(e, s, r, function(r, a, o) {
  1806.             o.userList = a, e.flash("errorerrors", r), logger.log("action", "A user is viewing a list of all users "),
  1807.             s.render(path.resolve("./templates/userList.pug"), o);
  1808.         });
  1809.     });
  1810. }, exports.getCertainProfiles = function(e, s) {
  1811.     if ("current" == e.params.param) {
  1812.         permissions.getUserPermissions(e, s, function(e, s, r) {
  1813.             showProfiles(e, s, r, function(r, a, o) {
  1814.                 var i = {};
  1815.                 for (var n in a) {
  1816.                     a[n][" "].membershipapproved + "" != "6" && a[n][" "].membershipapproved + "" != "8" && (i[n] = a[n]);
  1817.                 }
  1818.                 o.userList = i, e.flash("errorerrors", r), logger.log("action", "A user is viewing a list of all current users "),
  1819.                 s.render(path.resolve("./templates/userList.pug"), o);
  1820.             });
  1821.         });
  1822.     } else {
  1823.         if ("membership" == e.params.param) {
  1824.             if (e.query.status) {
  1825.                 if (1 == e.query.status.isNaN) {
  1826.                     s.redirect("/profiles/current");
  1827.                 } else {
  1828.                     var r = [];
  1829.                     for (var a in e.query.status) {
  1830.                         r.push(e.query.status[a] + "");
  1831.                     }
  1832.                     permissions.getUserPermissions(e, s, function(e, s, a) {
  1833.                         showProfiles(e, s, a, function(a, o, i) {
  1834.                             var n = {};
  1835.                             for (var t in o) {
  1836.                                 r.indexOf(o[t][" "].membershipapproved + "") > -1 && (n[t] = o[t]);
  1837.                             }
  1838.                             i.userList = n, e.flash("errorerrors", a), logger.log("action", "A user is viewing a list of all users with membership statuses of " + (e.query.status + "")),
  1839.                             s.render(path.resolve("./templates/userList.pug"), i);
  1840.                         });
  1841.                     });
  1842.                 }
  1843.             } else {
  1844.                 s.redirect("/profiles/current");
  1845.             }
  1846.         } else {
  1847.             if ("noroles" == e.params.param) {
  1848.                 permissions.getUserPermissions(e, s, function(e, s, r) {
  1849.                     r = permissions.delete(r, [ permissionsList.permissions.view_role ]), showProfiles(e, s, r, function(r, a, o) {
  1850.                         o.userList = a, e.flash("errorerrors", r), logger.log("action", "A user is viewing a list of all users without user roles "),
  1851.                         s.render(path.resolve("./templates/userList.pug"), o);
  1852.                     });
  1853.                 });
  1854.             } else {
  1855.                 if ("normal" == e.params.param) {
  1856.                     var o = permissions.getUnauthenticatedPermissions();
  1857.                     showProfiles(e, s, o, function(r, a, o) {
  1858.                         o.userList = a, e.flash("errorerrors", r), logger.log("action", "A user is viewing a list of all users "),
  1859.                         s.render(path.resolve("./templates/userList.pug"), o);
  1860.                     });
  1861.                 } else {
  1862.                     e.flash("error", "The filter sent may be incorrect "), s.redirect("/");
  1863.                 }
  1864.             }
  1865.         }
  1866.     }
  1867. }, exports.change = function(e, s) {
  1868.     "password" == e.params.data ? permissions.getUserPermissions(e, s, changePassword) : "addemail" == e.params.data ? permissions.getUserPermissions(e, s, changeEmail) : "addphone" == e.params.data ? permissions.getUserPermissions(e, s, changePhone) : (logger.log("error", "A user tried to go to a page to change an invalid data type", {
  1869.         username: e.params.name,
  1870.         data: e.params.data
  1871.     }), e.flash("error", "The datum you tried to edit was not a valid data type "),
  1872.     s.redirect("/profile/" + e.params.name));
  1873. }, exports.edit = function(e, s) {
  1874.     "password" == e.params.data ? permissions.getUserPermissions(e, s, editPassword) : "deleteemail" == e.params.data ? permissions.getUserPermissions(e, s, deleteEmail) : "addemail" == e.params.data ? permissions.getUserPermissions(e, s, addEmail) : "deletephone" == e.params.data ? permissions.getUserPermissions(e, s, deletePhone) : "addphone" == e.params.data ? permissions.getUserPermissions(e, s, addPhone) : "suspendaccount" == e.params.data ? permissions.getUserPermissions(e, s, suspendProfile) : "data" == e.params.data ? permissions.getUserPermissions(e, s, changeData) : (logger.log("error", "A user tried to edit an invalid data type", {
  1875.         username: e.params.name,
  1876.         data: e.params.data
  1877.     }), e.flash("error", "The datum you tried to edit was not a valid data type "),
  1878.     s.redirect("/profile/" + e.params.name));
  1879. }, exports.membership = function(e, s) {
  1880.     permissions.getUserPermissions(e, s, membershipDetails);
  1881. }, exports.adminViewMembership = function(e, s) {
  1882.     permissions.getUserPermissions(e, s, function(e, s, r) {
  1883.         1 == permissions.check(r, [ permissionsList.permissions.membership ]) ? users.find({}, function(r, a) {
  1884.             if (r) {
  1885.                 e.flash("errorobj", r), logger.log("error", "There was an error when a user tried to view all membership status "),
  1886.                 s.status(500), s.redirect("/");
  1887.             } else {
  1888.                 var o = !0;
  1889.                 if (e.user ? e.user.username ? logger.log("action", "A user is viewing the page showing all the memberships ", {
  1890.                     User: e.user.username
  1891.                 }) : (o = !1, s.redirect("/logout")) : logger.log("action", "A user who is not logged in is viewing the page showing all the memberships "),
  1892.                 o === !0) {
  1893.                     var i = {};
  1894.                     for (var n in a) {
  1895.                         i[a[n].username] = {
  1896.                             _id: a[n]._id,
  1897.                             membershipStatus: a[n].membershipapproved
  1898.                         };
  1899.                     }
  1900.                     s.render(path.resolve("./views/viewMemberships.pug"), {
  1901.                         title: "View membership information ",
  1902.                         styles: [],
  1903.                         scripts: [ "makeURL.js", "adminMembership.js" ],
  1904.                         users: i
  1905.                     });
  1906.                 }
  1907.             }
  1908.         }) : (e.flash("error", "You do not have permission to view this page "), s.redirect("/"));
  1909.     });
  1910. }, exports.updateMembership = function(e, s) {
  1911.     if (e.isAuthenticated() && e.user) {
  1912.         var r = isOwn(e, e.user.username, e.params.name);
  1913.         "username" == e.params.data ? permissions.getUserPermissions(e, s, function(e, s, a) {
  1914.             if (permissions.check(r === !0 && permissions.check(a, [ permissions.getFieldPermission("username", r)[0] ]) || permissions.check(a, [ permissionsList.permissions.edit_username ]))) {
  1915.                 if (null != e.body.newusername && void 0 != e.body.newusername && "" != e.body.newusername) {
  1916.                     var o = !1;
  1917.                     for (var i in charactersBlacklist) {
  1918.                         e.body.newusername.indexOf(charactersBlacklist[i]) > -1 && (o = !0);
  1919.                     }
  1920.                     usernameBlacklist.indexOf(e.body.newusername) > -1 && (o = !0), o === !0 ? e.flash("error", "The username you entered is not alowed ") : users.findOne({
  1921.                         username: e.body.newusername
  1922.                     }, function(r, a) {
  1923.                         r ? (e.flash("errorobj", r), logger.log("error", "There was an error when searching for users when a user tried to update a username ", {
  1924.                             Error: r,
  1925.                             User: e.user.username,
  1926.                             Editteduser: e.params.name,
  1927.                             Newusername: e.body.newusername
  1928.                         }), s.status(500), s.redirect("/")) : a ? (e.flash("error", "There is already a user with the username " + a.username),
  1929.                         s.redirect("/profile/" + e.params.name + "/membership")) : users.update({
  1930.                             username: e.params.name
  1931.                         }, {
  1932.                             username: e.body.newusername
  1933.                         }, function(r, a, o) {
  1934.                             logger.log("transaction", "Username change status: ", {
  1935.                                 Error: r,
  1936.                                 Count: a,
  1937.                                 Status: o
  1938.                             }), r ? (logger.log("error", "There was an error when updating a user's username "),
  1939.                             e.flash("errorobj", r), s.status(500), s.redirect("/")) : (e.flash("success", "Your username was successfully changed "),
  1940.                             s.redirect("/profile/" + e.body.newusername + "/membership"));
  1941.                         });
  1942.                     });
  1943.                 } else {
  1944.                     e.flash("error", "You did not send a new username "), s.redirect("/profile/" + e.params.name + "/membership");
  1945.                 }
  1946.             } else {
  1947.                 e.flash("error", "You do not have permission to change this user's username "),
  1948.                 s.redirect("/profile/" + e.params.name + "/membership");
  1949.             }
  1950.         }) : "suspendaccount" == e.params.data ? permissions.getUserPermissions(e, s, suspendProfile) : "renew" == e.params.data ? permissions.getUserPermissions(e, s, function(e, s, a) {
  1951.             1 == r || permissions.check(a, [ permissionsList.permissions.membership ]) ? users.findOne({
  1952.                 username: e.params.name
  1953.             }, function(r, a) {
  1954.                 if (r) {
  1955.                     e.flash("errorobj", r), logger.log("error", "There was an error finding users when a user requested full membership ", {
  1956.                         Error: r,
  1957.                         User: e.user.username,
  1958.                         AffectedUser: e.params.name
  1959.                     }), s.status(500), s.redirect("/");
  1960.                 } else {
  1961.                     if (a) {
  1962.                         var o = a.membershipapproved;
  1963.                         7 === o ? (e.flash("error", "An exempt user cannot request full membership "), s.redirect("/profile/" + e.params.name + "/membership")) : 6 === o ? (e.flash("error", "A suspended user cannot request full membership "),
  1964.                         s.redirect("/profile/" + e.params.name + "/membership")) : 2 === o || 5 === o ? (e.flash("error", "You have already payed for full membership "),
  1965.                         s.redirect("/profile/" + e.params.name + "/membership")) : 1 === o || 4 === o ? (e.flash("error", "You have already requested full membership "),
  1966.                         s.redirect("/profile/" + e.params.name + "/membership")) : (o += 1, users.update({
  1967.                             username: a.username
  1968.                         }, {
  1969.                             membershipapproved: o
  1970.                         }, function(r, a, o) {
  1971.                             logger.log("transaction", "User membership status update status: ", {
  1972.                                 Error: r,
  1973.                                 Count: a,
  1974.                                 Status: o
  1975.                             }), r ? (logger.log("error", "There was an error when a user tried to rquest full membership "),
  1976.                             e.flash("errorobj", r), s.status(500), s.redirect("/profile/" + e.params.name + "/membership")) : (e.flash("success", "You successfuly requested full membership "),
  1977.                             s.status(200), s.redirect("/profile/" + e.params.name + "/membership"));
  1978.                         }));
  1979.                     } else {
  1980.                         e.flash("error", "The user you are trying to update does not exist "), s.redirect("/");
  1981.                     }
  1982.                 }
  1983.             }) : (e.flash("error", "You do not have permission to update this user's membership status "),
  1984.             s.redirect("/profile/" + e.params.name + "/membership"));
  1985.         }) : (e.flash("error", "The membership datum you tried to edit was an invalid type "),
  1986.         s.redirect("/profile/" + e.params.name + "/membership"));
  1987.     } else {
  1988.         e.flash("error", "You must be logged in to edit user membership information "),
  1989.         s.redirect("/");
  1990.     }
  1991. }, exports.adminChangeMembershipPermissions = function(e, s) {
  1992.     permissions.getUserPermissions(e, s, adminChangeMembership);
  1993. }, exports.saveMessages = function(e, s) {
  1994.     if (e.body) {
  1995.         var r = !0, a = "", o = e.body.email;
  1996.         if (e.isAuthenticated() && e.user && (a = e.user.username, null == e.body.reply || void 0 == e.body.reply || "" == e.body.reply ? o = e.user.emails : (null == e.body.reply || void 0 == e.body.reply || "" == e.body.reply) && (r = !1,
  1997.         e.flash("error", "You must enter an email address if you are not logged in "), s.redirect("/contact"))),
  1998.         (null == e.body.about || void 0 == e.body.about || "" == e.body.about || null == e.body.message || void 0 == e.body.message || "" == e.body.message) && (r = !1,
  1999.         e.flash("error", "You must enter a message and state what the query is about "),
  2000.         s.redirect("/contact")), r === !0) {
  2001.             var i = new user_messages({
  2002.                 username: a,
  2003.                 email: o,
  2004.                 about: e.body.about,
  2005.                 message: e.body.message
  2006.             });
  2007.             i.save(function(r) {
  2008.                 r ? (logger.log("error", "There was an error when saving a query submitted by a user ", {
  2009.                     Error: r,
  2010.                     Username: a
  2011.                 }), e.flash("error", "There was an error submitting you message "), s.redirect("/")) : (logger.log("action", "A user submitted a query "),
  2012.                 e.flash("success", "You message was submitted successfully "), s.redirect("/"));
  2013.             });
  2014.         }
  2015.     } else {
  2016.         e.flash("error", "No data was sent to the server "), s.redirect("/contact");
  2017.     }
  2018. }, exports.viewMessages = function(e, s) {
  2019.     permissions.getUserPermissions(e, s, function(e, s, r) {
  2020.         permissions.check(r, [ permissions.getFieldPermission("contact", !1)[1] ]) ? user_messages.find({}, function(r, a) {
  2021.             r ? (logger.log("error", "There was an error when a user tried to see all the submitted queries ", {
  2022.                 Error: r
  2023.             }), e.flash("error", "There was an error when retrieving the messages "), s.redirect("/")) : 0 == a.length ? (e.flash("info", "There are no stored queries "),
  2024.             s.redirect("/")) : s.render(path.resolve("./views/viewMessages.pug"), {
  2025.                 title: "View Submitted Messages ",
  2026.                 styles: [ "datatables.net-dt/css/jquery.dataTables.css" ],
  2027.                 scripts: [ "datatables.net/js/jquery.dataTables.js", "viewMessages.js" ],
  2028.                 queries: a,
  2029.                 keys: Object.keys(user_messages.schema.paths),
  2030.                 capitalise: capitalise
  2031.             });
  2032.         }) : (e.flash("error", "You do not have permission to view a list of messages "),
  2033.         s.redirect("/"));
  2034.     });
  2035. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement