Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
Jay Mehta
/
strapi-setup-file
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Registry
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
Commit 22d3da8a
authored
2022-09-15 10:58:17 +0530
by
Harish Patel
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
channel partner and user permissions
1 parent
a591cf87
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
246 additions
and
0 deletions
src/api/channel-partner/content-types/channel-partner/schema.json
src/api/channel-partner/controllers/channel-partner.js
src/api/channel-partner/routes/channel-partner.js
src/api/channel-partner/services/channel-partner.js
src/extensions/users-permissions/strapi-server.js
src/api/channel-partner/content-types/channel-partner/schema.json
0 → 100644
View file @
22d3da8
{
"kind"
:
"collectionType"
,
"collectionName"
:
"channel_partners"
,
"info"
:
{
"singularName"
:
"channel-partner"
,
"pluralName"
:
"channel-partners"
,
"displayName"
:
"Channel Partner"
,
"description"
:
""
},
"options"
:
{
"draftAndPublish"
:
false
},
"pluginOptions"
:
{},
"attributes"
:
{
"companyName"
:
{
"type"
:
"string"
,
"required"
:
true
},
"companyType"
:
{
"type"
:
"string"
},
"contactPersonName"
:
{
"type"
:
"string"
},
"email"
:
{
"type"
:
"string"
},
"communicationAddress"
:
{
"type"
:
"text"
},
"mobileNo"
:
{
"type"
:
"string"
},
"city"
:
{
"type"
:
"string"
},
"state"
:
{
"type"
:
"string"
},
"reraNumber"
:
{
"type"
:
"string"
},
"regionOfOperation"
:
{
"type"
:
"string"
},
"sourcingManager"
:
{
"type"
:
"string"
},
"pan"
:
{
"type"
:
"string"
},
"panFile"
:
{
"type"
:
"media"
,
"multiple"
:
true
,
"required"
:
false
,
"allowedTypes"
:
[
"images"
,
"files"
]
},
"memberOf"
:
{
"type"
:
"string"
},
"termsAndConditions"
:
{
"type"
:
"boolean"
},
"user"
:
{
"type"
:
"relation"
,
"relation"
:
"oneToOne"
,
"target"
:
"plugin::users-permissions.user"
}
}
}
src/api/channel-partner/controllers/channel-partner.js
0 → 100644
View file @
22d3da8
'use strict'
;
/**
* channel-partner controller
*/
const
{
createCoreController
}
=
require
(
'@strapi/strapi'
).
factories
;
module
.
exports
=
createCoreController
(
'api::channel-partner.channel-partner'
);
src/api/channel-partner/routes/channel-partner.js
0 → 100644
View file @
22d3da8
'use strict'
;
/**
* channel-partner router
*/
const
{
createCoreRouter
}
=
require
(
'@strapi/strapi'
).
factories
;
module
.
exports
=
createCoreRouter
(
'api::channel-partner.channel-partner'
);
src/api/channel-partner/services/channel-partner.js
0 → 100644
View file @
22d3da8
'use strict'
;
/**
* channel-partner service
*/
const
{
createCoreService
}
=
require
(
'@strapi/strapi'
).
factories
;
module
.
exports
=
createCoreService
(
'api::channel-partner.channel-partner'
);
src/extensions/users-permissions/strapi-server.js
0 → 100644
View file @
22d3da8
const
utils
=
require
(
"@strapi/utils"
);
const
_
=
require
(
"lodash"
);
const
{
sanitize
}
=
utils
;
const
{
ApplicationError
}
=
utils
.
errors
;
const
{
validateRegisterBody
,
}
=
require
(
"@strapi/plugin-users-permissions/server/controllers/validation/auth"
);
const
sanitizeUser
=
(
user
,
ctx
)
=>
{
const
{
auth
}
=
ctx
.
state
;
const
userSchema
=
strapi
.
getModel
(
"plugin::users-permissions.user"
);
return
sanitize
.
contentAPI
.
output
(
user
,
userSchema
,
{
auth
});
};
const
userPermissionExtension
=
(
plugin
)
=>
{
/** Example of overriding and adding a new endpoint, check the section where we have registered this as a route below. */
plugin
.
controllers
.
user
.
updateMe
=
(
ctx
)
=>
{
ctx
.
params
.
id
=
ctx
.
state
.
user
.
id
;
return
plugin
.
controllers
.
user
.
update
(
ctx
);
};
/** Example of overriding an existing route. */
plugin
.
controllers
.
auth
.
register
=
async
(
ctx
)
=>
{
const
pluginStore
=
await
strapi
.
store
({
type
:
"plugin"
,
name
:
"users-permissions"
,
});
const
settings
=
await
pluginStore
.
get
({
key
:
"advanced"
});
if
(
!
settings
.
allow_register
)
{
throw
new
ApplicationError
(
"Register action is currently disabled"
);
}
const
params
=
{
...
_
.
omit
(
ctx
.
request
.
body
,
[
"confirmed"
,
"blocked"
,
"confirmationToken"
,
"resetPasswordToken"
,
"provider"
,
]),
provider
:
"local"
,
};
await
validateRegisterBody
(
params
);
// We have added the ability to choose the role.
// This is the customisation that we wanted to do to make this possible
const
newUserRole
=
params
?.
role
?
params
?.
role
:
settings
.
default_role
;
// the query was also changed to apply a query on "name" rather than the default "type".
const
role
=
await
strapi
.
query
(
"plugin::users-permissions.role"
)
.
findOne
({
where
:
{
name
:
newUserRole
}
});
if
(
!
role
)
{
throw
new
ApplicationError
(
"Impossible to find the default role"
);
}
// @ts-ignore
const
{
email
,
username
,
provider
}
=
params
;
const
identifierFilter
=
{
$or
:
[
{
email
:
email
.
toLowerCase
()
},
{
username
:
email
.
toLowerCase
()
},
{
username
},
{
email
:
username
},
],
};
const
conflictingUserCount
=
await
strapi
.
query
(
"plugin::users-permissions.user"
)
.
count
({
where
:
{
...
identifierFilter
,
provider
},
});
if
(
conflictingUserCount
>
0
)
{
throw
new
ApplicationError
(
"Email or Username are already taken"
);
}
if
(
settings
.
unique_email
)
{
const
conflictingUserCount
=
await
strapi
.
query
(
"plugin::users-permissions.user"
)
.
count
({
where
:
{
...
identifierFilter
},
});
if
(
conflictingUserCount
>
0
)
{
throw
new
ApplicationError
(
"Email or Username are already taken"
);
}
}
let
newUser
=
{
...
params
,
role
:
role
.
id
,
email
:
email
.
toLowerCase
(),
username
,
confirmed
:
!
settings
.
email_confirmation
,
};
const
user
=
await
strapi
.
plugin
(
"users-permissions"
)
.
service
(
"user"
)
.
add
(
newUser
);
const
sanitizedUser
=
await
sanitizeUser
(
user
,
ctx
);
if
(
settings
.
email_confirmation
)
{
try
{
await
strapi
.
plugin
(
"users-permissions"
)
.
service
(
"user"
)
.
sendConfirmationEmail
(
sanitizedUser
);
}
catch
(
err
)
{
throw
new
ApplicationError
(
err
.
message
);
}
return
ctx
.
send
({
user
:
sanitizedUser
});
}
const
jwt
=
strapi
.
plugin
(
"users-permissions"
)
.
service
(
"jwt"
)
.
issue
(
_
.
pick
(
user
,
[
"id"
]));
return
ctx
.
send
({
jwt
,
user
:
sanitizedUser
,
});
};
plugin
.
routes
[
"content-api"
].
routes
.
push
({
method
:
"PUT"
,
path
:
"/users/me"
,
handler
:
"user.updateMe"
,
});
return
plugin
;
};
module
.
exports
=
userPermissionExtension
;
Write
Preview
Styling with
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment