Jump to content

Can ProcessWire do this? (User Management, Profiles, Search)


Kai

Recommended Posts

Hi everyone, I want to start a new project that is community-based and would like to use PW for that. 

Some of the requirements: 

User management

  1. User sign up by email, google, linkedin, facebook
  2. User management by admin
  3. each user gets a profile page
  4. each user can define his own custom URL for his profile page
  5. users can password protect their profiles
  6. anti-spam: Flag button for profiles, track number of login attempts then block
  7. users can specify arbitrary user fields (!) (self-defined) - I did this once in another framework by a meta-table: "userid | title | value" 

Search

  1. users can find other users,
  2. search must index all user fields 

Misc

  1. Logging of all users events (e.g. user A accessed profile of user B, user C logged in, user D got blocked by admin, etc.)
  2. all pages via https 
  3. Let's imagine there would be 100 000 users - Will it still be fast enough?

 

Can ProcessWire fulfill all those requirements?

 

Link to comment
Share on other sites

Hi Kai, I don't see any requirements here that is not manageable by ProcessWire, the only limit will be knowledge of PHP.

 

4 hours ago, Kai said:

User management

  1. User sign up by email, google, linkedin, facebook
  2. User management by admin
  3. each user gets a profile page
  4. each user can define his own custom URL for his profile page
  5. users can password protect their profiles
  6. anti-spam: Flag button for profiles, track number of login attempts then block
  7. users can specify arbitrary user fields (!) (self-defined) - I did this once in another framework by a meta-table: "userid | title | value" 

1. You could implement OAuth easily with 3rd party libraries or integrate each provider's API into ProcessWire.

2. You can manage users by using API and/or by playing with roles, permissions into ProcessWire backend.

3. Yes - very easy, for example, you can just use "pages" and page filedtype for relations.

4. Yes - by playing with urlSegments.

5. Yes - you can implement this feature easily + there are one or two modules which might help you to achieve that.

6. Yes - you have to implement it.

7. Yes - by using the API .

 

Quote

Search

  1. users can find other users,
  2. search must index all user fields

1. Yes

2. Yes

 

4 hours ago, Kai said:

Misc

  1. Logging of all users events (e.g. user A accessed profile of user B, user C logged in, user D got blocked by admin, etc.)
  2. all pages via https 
  3. Let's imagine there would be 100 000 users - Will it still be fast enough?

1. Yes (hooks come to my mind).

2. No problem at all.

3. From what I've read on the forum, I want to say : superfast. (ProCache)

 

Quote

Can ProcessWire fulfill all those requirements?

O0

  • Like 8
  • Thanks 1
Link to comment
Share on other sites

  • 5 months later...

Is Admin > Access > Users really able to handle potentially hundreds of users? It seems designed for a small number of site admins and editors - you can't sort them by name or last registered etc.

Is there a way to separate members/newsletter subscribers from the small team of site admin/editor users? Store members under a separate page maybe? But how would you then manage roles and access etc.?

 

 

Link to comment
Share on other sites

2 hours ago, modifiedcontent said:

It seems designed for a small number of site admins and editors - you can't sort them by name or last registered etc.

Quite the contrary - the lister can handle virtually any number of users with ease. Click column headers to sort, add new columns on the "Columns" tab.

Link to comment
Share on other sites

We have ListerPro's with 10.000's of pages (some up to 80.000 pages and counting) displaying 25 fields. Just make sure to limit/paginate around 50 or 100. Still quite fast (around 3 seconds loading time). This includes all kinds of Markup changes. So I would say: yes ^_^

  • Like 7
Link to comment
Share on other sites

14 hours ago, modifiedcontent said:

Is it possible to get a list of only 'members', without admins, guests and editors mixed in?

You can filter users out by all sorts of rules, but you cannot easily create additional user listers like you could for plain pages with ListerPro. Sadly there aren't any bookmarks for the users lister as well, where one could save often used filters. I hope Ryan will add those some time.

  • Like 1
Link to comment
Share on other sites

1 hour ago, LostKobrakai said:

you cannot easily create additional user listers like you could for plain pages with ListerPro

@LostKobrakai, you can create custom user listers with ListerPro. They appear under "Pages" by default but you can move the page to be under "Access" and it seems to work fine there. You can also create bookmarks for that custom user lister, but not bookmarks for the built-in users lister (which would be nice).

 

Link to comment
Share on other sites

You can certainly create your own custom user listers with ListerPro, but it's neither adviced nor praticable, because the ProcessUser module does handle a lot of the permission issues regarding user pages, which those custom lister pages of ListerPro won't handle. 

Link to comment
Share on other sites

46 minutes ago, LostKobrakai said:

You can certainly create your own custom user listers with ListerPro, but it's neither adviced nor praticable, because the ProcessUser module does handle a lot of the permission issues regarding user pages, which those custom lister pages of ListerPro won't handle.

You mean if you are giving roles other than superuser access to to user management? I haven't looked into that a lot, but with a quick test it seems like once you give your "user manager" role edit access to the user template and configure the user-admin permissions for the role, the access to edit user pages is the same through the custom lister as through the default users lister (i.e. they cannot edit users they do not have the permission for). But you have probably investigated this more thoroughly.

Link to comment
Share on other sites

User management
  1) each user gets a profile page
  2) each user can define his own custom URL for his profile page

Sorry to hijack, but this is something I'm interested in but can't see how this works in PW. When they log in, they go to a profile page rather than the admin tree page? How is it done? Whenever I create a new user in testing, when I log in with their, the admin page is always the destination.

Link to comment
Share on other sites

On 3/11/2017 at 1:26 PM, SamC said:

Sorry to hijack, but this is something I'm interested in but can't see how this works in PW. When they log in, they go to a profile page rather than the admin tree page? How is it done? Whenever I create a new user in testing, when I log in with their, the admin page is always the destination.

That is what happens in the backend (you're logging in to the admin), but you can create your own frontend login procedure as well (completely from scratch or with the FrontendUser module). In that case, you control where the user gets redirected to.

  • Like 2
Link to comment
Share on other sites

1 hour ago, BitPoet said:

That is what happens in the backend (you're logging in to the admin), but you can create your own frontend login procedure as well (completely from scratch or with the FrontendUser module). In that case, you control where the user gets redirected to.

Ok, I see now, so people who register on a site never get to see the admin area. This part was confusing me, I thought people always went to the page tree after login. Guess I've still got a lot to learn.

 

 

Link to comment
Share on other sites

@SamC, I usually do what @BitPoet suggests and create custom login and profile edit forms for the front-end if the user only needs to edit their profile (or some other single page). But there are a few modules and snippets around that take the approach of creating a custom dashboard in the PW admin for users with non-superuser roles and redirecting them to that when they log in rather than the page tree. Here are a couple of links, and just search for "dashboard" to find more:

http://modules.processwire.com/modules/process-dashboard/

 

  • Like 1
Link to comment
Share on other sites

It depends. I'm actually regretting going that path for an application of mine, because it pushes so many if/else conditionals in your controllers/view layer, which could otherwise be handled by a single user class as part of the application domain. But it really depends on how separated your user types are in the application.

Edit: Also different user templates don't allow users to be of multiple of those user types.

  • Like 2
Link to comment
Share on other sites

  • 3 weeks later...

check out my module subscriber for some implementation of how you might add users and profiles but without giving them access to the PW "admin". Also note that I'm looking to give this module an overhale soon as it presumes ALOT of the developer using it currently.

Link to comment
Share on other sites

  • 1 year later...
On 9/19/2016 at 12:59 PM, flydev said:

Hi Kai, I don't see any requirements here that is not manageable by ProcessWire, the only limit will be knowledge of PHP.

 

1. You could implement OAuth easily with 3rd party libraries or integrate each provider's API into ProcessWire.

2. You can manage users by using API and/or by playing with roles, permissions into ProcessWire backend.

3. Yes - very easy, for example, you can just use "pages" and page filedtype for relations.

4. Yes - by playing with urlSegments.

5. Yes - you can implement this feature easily + there are one or two modules which might help you to achieve that.

6. Yes - you have to implement it.

7. Yes - by using the API .

 

1. Yes

2. Yes

 

1. Yes (hooks come to my mind).

2. No problem at all.

3. From what I've read on the forum, I want to say : superfast. (ProCache)

 

O0

Awesome Reply...  @flydev

Just wanted to add a side-query to OP. Below is a situation :-
#. Once a new user logged in, this user can see list of current Online Users.  ( I have seen this feature mainly in Forums websites / Social N/W sites )
Can we do this in PW ?

  • Thanks 1
Link to comment
Share on other sites

You can do it to the degree forums do it. Like track users activity somewhere in a database whenever communication happens and take some amount of timeout at which you consider a person without activity offline. What you cannot easily do is online users to the degree you would expect it from e.g. a chat platform, where you actually want to detect if someone is leaving without waiting 15 minutes and without them needing to communicate to your server constantly. This is the realm of websockets. I may be biased, but if you want a really proper (and scalable) solution for that problem take a look at: https://dockyard.com/blog/2016/03/25/what-makes-phoenix-presence-special-sneak-peek

  • Like 3
Link to comment
Share on other sites

  • 1 month later...
On 1/30/2019 at 3:15 AM, jmartsch said:

@JeevanisM Please take a look at https://processwire.com/docs/security/sessions/. With Database-driven sessions you can monitor live traffic on your site.

thanks a lot bro

On 1/29/2019 at 10:22 PM, LostKobrakai said:

You can do it to the degree forums do it. Like track users activity somewhere in a database whenever communication happens and take some amount of timeout at which you consider a person without activity offline. What you cannot easily do is online users to the degree you would expect it from e.g. a chat platform, where you actually want to detect if someone is leaving without waiting 15 minutes and without them needing to communicate to your server constantly. This is the realm of websockets. I may be biased, but if you want a really proper (and scalable) solution for that problem take a look at: https://dockyard.com/blog/2016/03/25/what-makes-phoenix-presence-special-sneak-peek

thanks a lot bro

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...