Viewing File: /usr/local/cpanel/base/frontend/jupiter/user_manager/services/userService.min.js

define(["angular","lodash","jquery","cjt/util/locale","cjt/io/api","cjt/io/uapi-request","cjt/io/uapi","cjt/util/parse","cjt/util/flatObject","cjt/services/APIService"],(function(e,s,r,a,i,n,t,d,u){var c;e.module("App").factory("userService",["$q","APIService","emailDaemonInfo","ftpDaemonInfo","webdiskDaemonInfo","features","defaultInfo",function(i,t,o,m,l,p,f){var v={email:{supports:{serviceRunning:o.enabled,allowed:p.email,createable:p.email&&o.enabled,editable:p.email,deletable:p.email,viewable:!0},name:"email"},ftp:{supports:{serviceRunning:m.enabled,allowed:p.ftp,createable:p.ftp&&m.enabled,editable:p.ftp,deletable:p.ftp,viewable:!0},name:"ftp"},webdisk:{supports:{serviceRunning:l.enabled,allowed:p.webdisk,createable:p.webdisk&&l.enabled,editable:p.webdisk,deletable:p.webdisk,viewable:!0},name:"webdisk"}};function g(e){e.ui={},e.typeLabel=h[e.type]}var h={service:a.maketext("Service Account"),hypothetical:a.maketext("Hypothetical Subaccount"),sub:a.maketext("Subaccount"),cpanel:a.maketext("cPanel Account")},_={ftp:a.maketext("FTP"),email:a.maketext("Email"),webdisk:a.maketext("Web Disk")};function b(e){var s=[];return e.services.email.enabled&&s.push("email"),e.services.ftp.enabled&&s.push("ftp"),e.services.webdisk.enabled&&s.push("webdisk webdav"),s.join(" ")}function w(e){return e.service?e.full_username+":"+e.service:e.full_username+":"+e.type}function A(r,a){r.enabled=d.parsePerlBoolean(r.enabled),r.isNew=!r.enabled,s.extend(r,s.cloneDeep(a)),e.isString(r.quota)&&(r.quota=d.parseInteger(r.quota)),e.isUndefined(r.enabledigest)||(r.enabledigest=d.parsePerlBoolean(r.enabledigest))}function k(r){var a=s.keys(r.services);if(s.each(a,(function(e){A(r.services[e],v[e])})),r.can_delete=d.parsePerlBoolean(r.can_delete),r.can_set_quota=d.parsePerlBoolean(r.can_set_quota),r.can_set_password=d.parsePerlBoolean(r.can_set_password),r.special=d.parsePerlBoolean(r.special),r.synced_password=d.parsePerlBoolean(r.synced_password),r.sub_account_exists=d.parsePerlBoolean(r.sub_account_exists),r.has_siblings=d.parsePerlBoolean(r.has_siblings),r.dismissed=d.parsePerlBoolean(r.dismissed),r.has_invite=d.parsePerlBoolean(r.has_invite),r.has_expired_invite=d.parsePerlBoolean(r.has_expired_invite),r.typeLabel=h[r.type],"hypothetical"===r.type||"sub"===r.type){r.candidate_issues_count=0,r.serviceSearch=[],r.dismissed_merge_candidates&&r.dismissed_merge_candidates.forEach((function(s){e.forEach(s.services,(function(e,r){A(e,v[r]),e.enabled&&(s.service=r)}))}));for(var i=0,n=r.merge_candidates.length;i<n;i++){var t=r.merge_candidates[i];for(var u in t.can_delete=d.parsePerlBoolean(t.can_delete),t.can_set_quota=d.parsePerlBoolean(t.can_set_quota),t.can_set_password=d.parsePerlBoolean(t.can_set_password),t.sub_account_exists=d.parsePerlBoolean(t.sub_account_exists),t.has_siblings=d.parsePerlBoolean(t.has_siblings),t.dismissed=d.parsePerlBoolean(t.dismissed),t.services)t.services.hasOwnProperty(u)&&(A(t.services[u],v[u]),t.services[u].enabled&&(r.services[u].enabledInCandidate=!0,t.service=u));t.issues.length>0&&r.candidate_issues_count++,t.typeLabel=h[t.type],t.serviceLabel=_[t.service],t.serviceSearch=b(t),r.serviceSearch.push(t.serviceSearch),t.guid=w(t)}}else"service"===r.type&&a.some((function(e){if(r.services[e].enabled)return r.service=e,!0}));return null===r.guid&&(r.guid=w(r)),r.serviceSearch?(r.serviceSearch.push(b(r)),r.serviceSearch=r.serviceSearch.join(" ")):r.serviceSearch=b(r),g(r),r.merge_candidates&&r.merge_candidates.forEach(g),r}function y(e,s,r){return Object.keys(s).some((function(a){if(s[a].enabled)return e[a]=s[a],e[a].isCandidate=!0,r&&(e[a].isDismissed=!0),!0})),e}function P(e,s){var r={};return e.merge_candidates.forEach((function(e){y(r,e.services)})),s&&e.dismissed_merge_candidates.forEach((function(e){y(r,e.services,!0)})),r}function C(e){var s=[];if(e.data){for(var r=e.data,a=0,i=r.length;a<i;a++){var n=k(r[a]);s.push(n)}return{items:s,totalItems:e.meta&&e.meta.paginate&&e.meta.paginate.is_paged?e.meta.paginate.total_records:r.length}}return{items:[],totalItems:0}}var S=["can_delete","can_set_quota","can_set_password","candidate_issues_count","issues","serviceSearch","merge_candidates","special","synced_password","sub_account_exists","has_siblings","parent_type","dismissed","dismissed_merge_candidates","has_invite","has_expired_invite","name","isNew"];function q(){return{username:"",domain:"",real_name:"",alternate_email:"",phone_number:"",avatar_url:"",services:{email:{name:v.name,enabled:!1,isNew:!0,quota:f.email.default_value,quotaUnit:"MB",supports:v.email.supports},ftp:{name:v.name,enabled:!1,isNew:!0,quota:f.ftp.default_value,quotaUnit:"MB",homedir:"public_html/",supports:v.ftp.supports},webdisk:{name:v.name,enabled:!1,isNew:!0,homedir:"public_html/",perms:"rw",supports:v.webdisk.supports,enabledigest:!1}}}}function I(e){var s=q();return r.extend(!0,s,e),s.services.ftp.enabled||(s.services.ftp.homedir+=s.domain+"/"+s.username),s.services.webdisk.enabled||(s.services.webdisk.homedir+=s.domain+"/"+s.username),s}var x=function(){};return x.prototype=new t,e.extend(x.prototype,{emptyUser:q,backfillUser:I,fetchList:function(e,s){s=s||{};var r=new n.Class;return r.initialize("UserManager","list_users"),r.addArgument("flat",e?1:0),s.sortBy&&(s.sortDirection=s.sortDirection||"asc",r.addSorting(s.sortBy,s.sortDirection,s.sortType)),this.deferred(r,{transformAPISuccess:C}).promise},fetchUser:function(e){var s=new n.Class;return s.initialize("UserManager","lookup_user"),s.addArgument("guid",e),this.deferred(s,{transformAPISuccess:function(e){return e.data=I(k(e.data)),e.data.candidate_services=P(e.data,!0),e.data}}).promise},fetchService:function(e,s){var r=new n.Class;return r.initialize("UserManager","lookup_service_account"),r.addArgument("type",e),r.addArgument("full_username",s),this.deferred(r,{transformAPISuccess:function(e){return I(k(e.data))}}).promise},delete:function(e){var s,r;"sub"===e.type?((s=new n.Class).initialize("UserManager","delete_user"),s.addArgument("username",e.username),s.addArgument("domain",e.domain),r=this.deferred(s,{transformAPISuccess:function(e){return e.data&&(e.data=k(e.data)),e}}).promise):"service"===e.type?e.services.email.enabled?((s=new n.Class).initialize("Email","delete_pop"),s.addArgument("email",e.full_username),r=this.deferred(s).promise):e.services.ftp.enabled?((s=new n.Class).initialize("Ftp","delete_ftp"),s.addArgument("user",e.full_username),s.addArgument("destroy",0),r=this.deferred(s).promise):e.services.webdisk.enabled?((s=new n.Class).initialize("WebDisk","delete_user"),s.addArgument("user",e.full_username),s.addArgument("destroy",0),r=this.deferred(s).promise):r=i((function(s,r){r(a.maketext("The system could not determine the service type for the “[_1]” service account.",e.full_username))})):r=i((function(s,r){r(a.maketext("The system could not delete the “[_1]” account. You cannot delete the “[_2]” account type.",e.full_username,e.type))}));return r},linkAndDismiss:function(s,r){var a,t,d=[],u=[];e.forEach(r||s.services,(function(e,s){if(e.isCandidate){if(e.willLink&&e.willDismiss)throw"Developer Error: You cannot link and dismiss the same service account.";e.willLink?u.push(s):e.willDismiss&&d.push(s)}}));var c=[];u.length&&((a=new n.Class).initialize("UserManager","merge_service_account"),a.addArgument("username",s.username),a.addArgument("domain",s.domain),u.forEach((function(e){a.addArgument("services."+e+".merge",1)})),t=this.deferred(a,{transformAPISuccess:function(e){return k(e.data)},transformAPIFailure:function(e){return{error:e.error,call:"link"}}}).promise,c.push(t)),d.length&&((a=new n.Class).initialize("UserManager","dismiss_merge"),a.addArgument("username",s.username),a.addArgument("domain",s.domain),d.forEach((function(e){a.addArgument("services."+e+".dismiss",1)})),t=this.deferred(a,{transformAPISuccess:function(e){return e.data},transformAPIFailure:function(e){return{error:e.error,call:"link"}}}).promise,c.push(t));var o=this;return i.all(c).then((function(e){return e.length?o.fetchUser(s.guid).then((function(e){return e.dismissed_services=d,e.linked_services=u,e})):s})).catch((function(e){return i((function(r,a){o.fetchUser(s.guid).then((function(s){e.user=s,a(e)}))}))}))},create:function(e){var s=new n.Class;s.initialize("UserManager","create_user"),s.addArgument("username",e.username),s.addArgument("domain",e.domain),s.addArgument("real_name",e.fullName),s.addArgument("alternate_email",e.recoveryEmail),e.sendInvite?s.addArgument("send_invite",1):s.addArgument("password",e.password),p.email&&!e.services.email.isCandidate&&(s.addArgument("services.email.enabled",e.services.email.enabled?1:0),s.addArgument("services.email.quota",e.services.email.quota)),p.ftp&&!e.services.ftp.isCandidate&&(s.addArgument("services.ftp.enabled",e.services.ftp.enabled?1:0),m.supports.quota&&s.addArgument("services.ftp.quota",e.services.ftp.quota),s.addArgument("services.ftp.homedir",e.services.ftp.homedir)),p.webdisk&&!e.services.webdisk.isCandidate&&(s.addArgument("services.webdisk.enabled",e.services.webdisk.enabled?1:0),s.addArgument("services.webdisk.homedir",e.services.webdisk.homedir),s.addArgument("services.webdisk.perms",e.services.webdisk.perms),s.addArgument("services.webdisk.enabledigest",e.services.webdisk.enabledigest?1:0));var r=this;return this.deferred(s,{transformAPISuccess:function(e){return k(e.data)}}).promise.then((function(s){return r.linkAndDismiss(s,e.services)}))},edit:function(r){var a=new n.Class;a.initialize("UserManager","edit_user");var i=function(r){var a=JSON.parse(JSON.stringify(r));S.forEach((function(e){delete a[e]}));var i=s.keys(a.services);return s.each(i,(function(s){a.services[s].isCandidate?delete a.services[s]:(a.services[s].enabled=a.services[s].enabled?1:0,e.isUndefined(a.services[s].enabledigest)||(a.services[s].enabledigest=a.services[s].enabledigest?1:0),delete a.services[s].supports)})),u.flatten(a)}(r);for(var t in i)i.hasOwnProperty(t)&&a.addArgument(t,i[t]);return this.deferred(a,{transformAPISuccess:function(e){return k(e.data)}}).promise},editService:function(e,s){var r,t,d=[];return e.services.email.enabled?(e.services.email.quota!==s.quota&&((r=new n.Class).initialize("Email","edit_pop_quota"),r.addArgument("email",e.username),r.addArgument("domain",e.domain),r.addArgument("quota",e.services.email.quota),t=this.deferred(r).promise,d.push(t)),e.password&&((r=new n.Class).initialize("Email","passwd_pop"),r.addArgument("email",e.username),r.addArgument("domain",e.domain),r.addArgument("password",e.password),t=this.deferred(r).promise,d.push(t))):e.services.ftp.enabled?(e.services.ftp.quota!==s.quota&&((r=new n.Class).initialize("Ftp","set_quota"),r.addArgument("user",e.username),r.addArgument("domain",e.domain),r.addArgument("quota",e.services.ftp.quota),t=this.deferred(r).promise,d.push(t)),e.services.ftp.homedir!==s.homedir&&((r=new n.Class).initialize("Ftp","set_homedir"),r.addArgument("user",e.username),r.addArgument("domain",e.domain),r.addArgument("homedir",e.services.ftp.homedir),t=this.deferred(r).promise,d.push(t)),e.password&&((r=new n.Class).initialize("Ftp","passwd"),r.addArgument("user",e.username),r.addArgument("domain",e.domain),r.addArgument("pass",e.password),t=this.deferred(r).promise,d.push(t))):e.services.webdisk.enabled?(e.services.webdisk.homedir!==s.homedir&&((r=new n.Class).initialize("WebDisk","set_homedir"),r.addArgument("user",e.full_username),r.addArgument("homedir",e.services.webdisk.homedir),t=this.deferred(r).promise,d.push(t)),e.services.webdisk.perms!==s.perms&&((r=new n.Class).initialize("WebDisk","set_permissions"),r.addArgument("user",e.full_username),r.addArgument("perms",e.services.webdisk.perms),t=this.deferred(r).promise,d.push(t)),e.password&&((r=new n.Class).initialize("WebDisk","set_password"),r.addArgument("user",e.full_username),r.addArgument("password",e.password),r.addArgument("enabledigest",e.services.webdisk.enabledigest?1:0),t=this.deferred(r).promise,d.push(t)),e.password||e.services.webdisk.enabledigest===s.enabledigest||(r=new n.Class)):(t=i((function(s,r){r(a.maketext("The system detected an unknown service for the “[_1]” service account.",e.full_username))})),d.push(t)),i.all(d)},prepareList:function(e){if(e.status)return C(e);throw e.errors},link:function(e,s,r){var a=new n.Class;if(a.initialize("UserManager","merge_service_account"),a.addArgument("username",e.username),a.addArgument("domain",e.domain),s)(e.services[s].enabled||r)&&a.addArgument("services."+s+".merge",1);else for(var i in e.services)e.services.hasOwnProperty(i)&&e.services[i].enabled&&a.addArgument("services."+i+".merge",1);return this.deferred(a,{transformAPISuccess:function(e){return k(e.data)}}).promise},unlink:function(e,s){var r=new n.Class;return r.initialize("UserManager","unlink_service_account"),r.addArgument("username",e.username),r.addArgument("domain",e.domain),r.addArgument("service",s),r.addArgument("dismiss",!0),this.deferred(r,{transformAPISuccess:C}).promise},linkAll:function(e){var s=new n.Class;s.initialize("UserManager","merge_service_account"),s.addArgument("username",e.username),s.addArgument("domain",e.domain);for(var r=0,a=e.merge_candidates.length;r<a;r++){var i=e.merge_candidates[r];for(var t in i.services)if(i.services.hasOwnProperty(t)&&i.services[t].enabled){var d="services."+t+".merge";s.addArgument(d,!0)}}return this.deferred(s,{transformAPISuccess:function(e){return k(e.data)}}).promise},dismissLink:function(e){var s=new n.Class;for(var r in s.initialize("UserManager","dismiss_merge"),s.addArgument("username",e.username),s.addArgument("domain",e.domain),e.services)if(e.services.hasOwnProperty(r)&&e.services[r].enabled){var a="services."+r+".dismiss";s.addArgument(a,!0)}return this.deferred(s,{transformAPISuccess:function(e){return e.data}}).promise},dismissAll:function(e){var s=new n.Class;s.initialize("UserManager","dismiss_merge"),s.addArgument("username",e.username),s.addArgument("domain",e.domain);for(var r=0,a=e.merge_candidates.length;r<a;r++){var i=e.merge_candidates[r];for(var t in i.services)if(i.services.hasOwnProperty(t)&&i.services[t].enabled){var d="services."+t+".dismiss";s.addArgument(d,!0)}}return this.deferred(s,{transformAPISuccess:function(e){return e.data}}).promise},checkAccountConflicts:function(e){c&&c.abort();var s=new n.Class;s.initialize("UserManager","check_account_conflicts"),s.addArgument("full_username",e);var r=this.deferred(s,{transformAPISuccess:function(e){return e.data.accounts&&(e.data.accounts=k(e.data.accounts),e.data.accounts.candidate_services=P(e.data.accounts,!0)),e.data}});return i((function(e,s){r.promise.then((function(r){r.conflict?s(a.maketext("The username is not available.")):e(r)}),(function(e){s(a.maketext("The system failed to determine whether the username is available: [_1]",e))}))}))},integrateCandidateServices:function(s,r){var a=r&&r.candidate_services||{},i=s.services,n=this;return e.forEach(i,(function(e,s){a[s]?i[s]=a[s]:i[s].isCandidate&&(i[s]=n.emptyUser().services[s])})),s},expandDismissed:function(s,r){var a=r?[]:[s];if(e.isArray(s.dismissed_merge_candidates))return a.concat(s.dismissed_merge_candidates.map(k));throw new TypeError("Developer Error: dismissed_merge_candidates must be an array.")},sendRequest:function(e,s,r){return e=new t.AngularAPICall(e,s,r),c=e.jqXHR,e.deferred},addInvitationIssues:function(e){e.has_invite&&(e.has_expired_invite?e.issues.unshift({type:"error",title:a.maketext("Invite Expired")+":",message:a.maketext("This user did not respond to the invitation before it expired. Please delete and re-create the user to send another invitation or set the user’s password yourself.")}):e.issues.unshift({type:"info",title:a.maketext("Invite Pending")+":",message:a.maketext("This user has not used the invitation to set a password.")}))}}),new x}])}));
Back to Directory File Manager