try using db for permission management and when u want to make a rep public u just have to add it's id or name to everyuser permissions field. i think you don't need to add any "is_public" field to index, just an id or name field in wich the indexed doc is.So you can pre-filter the reps quering the db obtaining the reps for wich user has permissions and adding this restrictions to the solr query. this way you can't change reps'permissions without re-indexing. so the query for solr if the current user is allowed for search in the 1 and 2 reps should be something like ...rep_id:1OR2...
Alex On Wed, Mar 25, 2009 at 8:06 PM, Jesper Nøhr <jes...@noehr.org> wrote: > OK, we're getting closer. I just have two final questions regarding this > then: > > 1. This would also include all the public repositories, right? If so, > how would such a query look? Some kind of is_public:true AND ...? > > 2. When a repository is made public, the is_public property in the > Solr index needs to reflect this. How can such an update be made > without having to purge and re-index? > > > Jesper > > > On Wed, Mar 25, 2009 at 6:29 PM, Alejandro Gonzalez > <alejandrogonzalezd...@gmail.com> wrote: > > ok so u can create a table in a DB where you have a row foreach user and > a > > field with the reps he/she can access. Then you just have to take a look > on > > the db and include the repository name in the index. so you just have to > > control (using query parameters) if the query is done for the right reps > for > > that user. > > > > is it good for u? > > > > > > > > On Wed, Mar 25, 2009 at 6:20 PM, Jesper Nøhr <jes...@noehr.org> wrote: > > > >> Hm, I must be missing something, then. > >> > >> Consider this. > >> > >> There are three repositories, A and B, C. There are two users, U1 and > U2. > >> > >> Repository A is public, while B and C are private. Only U1 can access > >> B. No one can access C. > >> > >> I index this data, such that Is_Private is true for B. > >> > >> Now, when U2 searches, he will only see data for repo A. This is > correct. > >> > >> When U1 searches, what happens? AFAIK, he will also only see data for > >> A, unless we specify Is_Private:True, but then he will only see data > >> for B (and C, which he doesn't have access to.) > >> > >> Secondly, say we grant U2 access to B. How do we tell Solr that he can > >> see it, then? > >> > >> Sorry if I'm not making much sense here, but I'm quite confused. > >> > >> > >> Jesper > >> > >> > >> > >> On Wed, Mar 25, 2009 at 6:13 PM, Alejandro Gonzalez > >> <alejandrogonzalezd...@gmail.com> wrote: > >> > i can't see the problem about that. you can manage your users using a > DB > >> and > >> > keep there the permissions they could have, and create or erase users > >> > without problems. you just have to manage a "working index" field for > >> each > >> > user with repositories' ids he can access. or u can create several > >> indexes > >> > and a users solr index with a multi-valued field with the indexes the > >> user > >> > can access. > >> > > >> > if then u want to turn a private repository into public u just have to > >> > change the permissions field in your DB or users' index. > >> > > >> > On Wed, Mar 25, 2009 at 6:02 PM, Jesper Nøhr <jes...@noehr.org> > wrote: > >> > > >> >> On Wed, Mar 25, 2009 at 5:57 PM, Eric Pugh > >> >> <ep...@opensourceconnections.com> wrote: > >> >> > You could index the user name or ID, and then in your application > add > >> as > >> >> > filter the username as you pass the query back to Solr. Maybe have > a > >> >> > access_type that is Public or Private, and then for public searches > >> only > >> >> > include the ones that meet the access_type of Public. > >> >> > >> >> That makes sense. Two questions on that: > >> >> > >> >> 1. More than one user can have access to a repository, so how would > >> >> that work? Also, if a user is added/removed, what's the best way to > >> >> keep that in sync? > >> >> > >> >> 2. In the event that a repository that is private, is made public, > how > >> >> easy would it be to run an "UPDATE" so to speak? > >> >> > >> >> > >> >> Jesper > >> >> > >> >> > On Mar 25, 2009, at 12:52 PM, Jesper Nøhr wrote: > >> >> > > >> >> >> Hi list, > >> >> >> > >> >> >> I've finally settled on Solr, seeing as it has almost everything I > >> >> >> could want out of the box. > >> >> >> > >> >> >> My setup is a complicated one. It will serve as the search backend > on > >> >> >> Bitbucket.org, a mercurial hosting site. We have literally > thousands > >> >> >> of code repositories, as well as users and other data. All this > needs > >> >> >> to be indexed. > >> >> >> > >> >> >> The complication comes in when we have private repositories. Only > >> >> >> select users have access to these, but we still need to index > them. > >> >> >> > >> >> >> How would I go about accomplishing this? I can't think of a clean > way > >> to > >> >> >> do it. > >> >> >> > >> >> >> Any pointers much appreciated. > >> >> >> > >> >> >> > >> >> >> Jesper > >> >> > > >> >> > ----------------------------------------------------- > >> >> > Eric Pugh | Principal | OpenSource Connections, LLC | 434.466.1467 > | > >> >> > http://www.opensourceconnections.com > >> >> > Free/Busy: http://tinyurl.com/eric-cal > >> >> > > >> >> > > >> >> > > >> >> > > >> >> > > >> >> > >> > > >> > > >