[Building Sakai] How to create user using Sql Queries

Steve Swinsburg steve.swinsburg at gmail.com
Tue Jun 24 02:48:11 PDT 2014


Can you post the full method you are using without any commented out bits
or colour coding?

If you use the Web services to edit a user, using this same David username,
does it work?

When you made that security service call that worked,  what user were you
logged in as?

sent from my mobile device
On 24/06/2014 7:30 PM, "Jehan" <jeehaaan at gmail.com> wrote:

> Dear Steve
>
> It print same error (*UserPermissionException:* e.printStackTrace() )
> whether I comment or remove following code for unlocking,
>
> When I print System.out.println(SecurityService.unlock("user.upd.any",
> site.getReference()))  then it return "*true*" value, its mean locking is
> working fine.
>
> /*
>
>   if (!SecurityService.isSuperUser(usession.getUserId()) &&
>       !SecurityService.unlock("user.upd.any", site.getReference())
>   )
>    {
>  System.out.println(" Permission denied. Must be super user for updating a
> user in site in which you are not a maintainer.");
>  return ERROR_LOCK;
>  }
> else
> {
> */
>
>   UserEdit userEdit = null;
> try {
>   *userEdit = UserDirectoryService.editUser(userid);  //here exception is
> throwing*
> userEdit.setFirstName(decorateStudent.first_name);
>  userEdit.setLastName(decorateStudent.last_name);
> userEdit.setEmail(decorateStudent.email);
>  userEdit.setPassword(decorateStudent.password);
> UserDirectoryService.commitEdit(userEdit);
> System.out.println("Successfully updated ");
>  }
> *catch (org.sakaiproject.user.api.UserPermissionException ex)*
> * {*
> * //UserDirectoryService.cancelEdit(userEdit);*
> *    e.printStackTrace(); //following exception is printing by this code
> fragment*
> *
> // org.sakaiproject.user.api.User PermissionException user=david function=user.upd.any resource=/user/stewart1*
> *                                 //      at
> org.sakaiproject.user.impl.BaseUserDirectoryService.unlock( ..............*
> * }*
> catch (org.sakaiproject.user.api.UserLockedException ex1)
> {
>  UserDirectoryService.cancelEdit(userEdit);
>  e.printStackTrace();
>  }
>  catch (Exception e) {
>  UserDirectoryService.cancelEdit(userEdit);
>  e.printStackTrace();
>
>  }
>
> return SUCCESS;
> //}
>
>
> On Mon, Jun 23, 2014 at 6:54 PM, Steve Swinsburg <
> steve.swinsburg at gmail.com> wrote:
>
>> Can you show your actual code for this piece? I have a feeling your
>> unlock isn't being done correctly.
>>
>> cheers,
>> Steve
>>
>>
>> On Mon, Jun 23, 2014 at 7:18 PM, Jehan <jeehaaan at gmail.com> wrote:
>>
>>> Why I am facing following exception though I have assigned permission
>>> user.upd.any to user "david"
>>>
>>> New user successfully inserting but updation create problem
>>>
>>> org.sakaiproject.user.api.*UserPermissionException *user=*david *
>>> function=*user.upd.any* resource=*/user/stewart1*
>>>         at
>>> org.sakaiproject.user.impl.BaseUserDirectoryService.unlock(BaseUserDi
>>> rectoryService.java:270)
>>>         at
>>> org.sakaiproject.user.impl.BaseUserDirectoryService.editUser(BaseUser
>>> DirectoryService.java:1085)
>>>         at
>>> org.sakaiproject.user.cover.UserDirectoryService.editUser(UserDirecto
>>> ryService.java:156)
>>>         at
>>> org.sakaiproject.tool.qarnet.QarnetTool.CreateUpdateSakaiUser(QarnetT
>>> ool.java:3825)
>>>         at
>>> org.sakaiproject.tool.qarnet.QarnetTool.processCreateStudent(QarnetTo
>>> ol.java:3760)
>>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>         at
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
>>> java:39)
>>>         at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
>>> sorImpl.java:25)
>>>         at java.lang.reflect.Method.invoke(Method.java:597)
>>>         at
>>> com.sun.faces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:146)
>>>
>>>         at
>>> com.sun.faces.application.ActionListenerImpl.processAction(ActionList
>>> enerImpl.java:92)
>>>         at javax.faces.component.UICommand.broadcast(UICommand.java:332)
>>>         at
>>> javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:287)
>>>
>>>         at
>>> javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:4
>>> 01)
>>>         at
>>> com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicat
>>> ionPhase.java:95)
>>>         at
>>> com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:268)
>>>         at
>>> com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:110)
>>>
>>>         at javax.faces.webapp.FacesServlet.service(FacesServlet.java:213)
>>>         at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
>>> icationFilterChain.java:305)
>>>         at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
>>> ilterChain.java:210)
>>>         at
>>> org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:634)
>>>         at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
>>> icationFilterChain.java:243)
>>>         at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
>>> ilterChain.java:210)
>>>         at
>>> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDisp
>>> atcher.java:749)
>>>         at
>>> org.apache.catalina.core.ApplicationDispatcher.processRequest(Applica
>>> tionDispatcher.java:487)
>>>         at
>>> org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationD
>>> ispatcher.java:412)
>>>         at
>>> org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDis
>>> patcher.java:339)
>>>         at
>>> org.sakaiproject.tool.qarnet.QarnetFilePickerServlet.dispatch(QarnetF
>>> ilePickerServlet.java:158)
>>>         at org.sakaiproject.jsf.util.JsfTool.doPost(JsfTool.java:256)
>>>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
>>>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
>>>         at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
>>> icationFilterChain.java:305)
>>>         at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
>>> ilterChain.java:210)
>>>         at
>>> org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:634)
>>>         at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
>>> icationFilterChain.java:243)
>>>         at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
>>> ilterChain.java:210)
>>>         at
>>> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDisp
>>> atcher.java:749)
>>>         at
>>> org.apache.catalina.core.ApplicationDispatcher.processRequest(Applica
>>> tionDispatcher.java:487)
>>>         at
>>> org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationD
>>> ispatcher.java:379)
>>>         at
>>> org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDis
>>> patcher.java:339)
>>>         at
>>> org.sakaiproject.tool.impl.ActiveToolComponent$MyActiveTool.forward(A
>>> ctiveToolComponent.java:511)
>>>         at
>>> org.sakaiproject.portal.charon.SkinnableCharonPortal.forwardTool(Skin
>>> nableCharonPortal.java:1483)
>>>         at
>>> org.sakaiproject.portal.charon.handlers.ToolHandler.doTool(ToolHandle
>>> r.java:213)
>>>         at
>>> org.sakaiproject.portal.charon.handlers.ToolHandler.doGet(ToolHandler
>>> .java:96)
>>>         at
>>> org.sakaiproject.portal.charon.handlers.ToolHandler.doPost(ToolHandle
>>> r.java:73)
>>>         at
>>> org.sakaiproject.portal.charon.SkinnableCharonPortal.doPost(Skinnable
>>> CharonPortal.java:1273)
>>>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
>>>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
>>>         at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
>>> icationFilterChain.java:305)
>>>         at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
>>> ilterChain.java:210)
>>>         at
>>> org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:695)
>>>         at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
>>> icationFilterChain.java:243)
>>>         at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
>>> ilterChain.java:210)
>>>         at
>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
>>> alve.java:222)
>>>         at
>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
>>> alve.java:123)
>>>         at
>>> org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authentica
>>> torBase.java:472)
>>>         at
>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
>>> ava:171)
>>>         at
>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
>>> ava:99)
>>>         at
>>> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:
>>> 947)
>>>         at
>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
>>> ve.java:118)
>>>         at
>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
>>> a:408)
>>>         at
>>> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp
>>> 11Processor.java:1009)
>>>         at
>>> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(
>>> AbstractProtocol.java:589)
>>>         at
>>> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoin
>>> t.java:312)
>>>         at
>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
>>> utor.java:886)
>>>         at
>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
>>> .java:908)
>>>         at java.lang.Thread.run(Thread.java:619)
>>>
>>>
>>>
>>>
>>> On Mon, Jun 23, 2014 at 1:35 PM, Jehan <jeehaaan at gmail.com> wrote:
>>>
>>>> Everything works fine,
>>>>
>>>>  but following error log is generating when creating new user or
>>>> updating existing user
>>>>
>>>>
>>>>
>>>> Jun 23, 2014 2:32:08 PM org.apache.catalina.loader.WebappClassLoader
>>>> loadClass
>>>> INFO: Illegal access: this web application instance has been stopped
>>>> already.  C
>>>> ould not load org.sakaiproject.sitestats.impl.ServerStatImpl.  The
>>>> eventual foll
>>>> owing stack trace is caused by an error thrown for debugging purposes
>>>> as well as
>>>>  to attempt to terminate the thread which caused the illegal access,
>>>> and has no
>>>> functional impact.
>>>> java.lang.IllegalStateException
>>>>         at
>>>> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoa
>>>> der.java:1599)
>>>>         at
>>>> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoa
>>>> der.java:1558)
>>>>         at
>>>> org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:164)
>>>>
>>>>         at
>>>> org.hibernate.impl.SessionFactoryImpl.getImplementors(SessionFactoryI
>>>> mpl.java:730)
>>>>         at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1544)
>>>>         at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
>>>>         at
>>>> org.hibernate.impl.CriteriaImpl.uniqueResult(CriteriaImpl.java:305)
>>>>         at
>>>> org.sakaiproject.sitestats.impl.StatsUpdateManagerImpl.doUpdateServer
>>>> StatObjects(StatsUpdateManagerImpl.java:1157)
>>>>         at
>>>> org.sakaiproject.sitestats.impl.StatsUpdateManagerImpl.access$1400(St
>>>> atsUpdateManagerImpl.java:76)
>>>>         at
>>>> org.sakaiproject.sitestats.impl.StatsUpdateManagerImpl$4.doInHibernat
>>>> e(StatsUpdateManagerImpl.java:878)
>>>>         at
>>>> org.springframework.orm.hibernate3.HibernateTemplate.doExecute(Hibern
>>>> ateTemplate.java:419)
>>>>         at
>>>> org.springframework.orm.hibernate3.HibernateTemplate.execute(Hibernat
>>>> eTemplate.java:339)
>>>>         at
>>>> org.sakaiproject.sitestats.impl.StatsUpdateManagerImpl.doUpdateConsol
>>>> idatedEvents(StatsUpdateManagerImpl.java:805)
>>>>         at
>>>> org.sakaiproject.sitestats.impl.StatsUpdateManagerImpl.run(StatsUpdat
>>>> eManagerImpl.java:484)
>>>>         at java.lang.Thread.run(Thread.java:619)
>>>>
>>>>
>>>>
>>>> On Mon, Jun 23, 2014 at 1:04 PM, Jehan <jeehaaan at gmail.com> wrote:
>>>>
>>>>> Thanks! problem resolved, it was realm entry missing.
>>>>>
>>>>>
>>>>>
>>>>> On Mon, Jun 23, 2014 at 10:24 AM, Jehan <jeehaaan at gmail.com> wrote:
>>>>>
>>>>>> Dear Metthew Jhones!
>>>>>>
>>>>>> Yes! I want to create new tool for some users who will create new
>>>>>> user accounts only.
>>>>>>
>>>>>> Yes! I am using UserDirectoryService.
>>>>>>
>>>>>> New tool is added to a project site, and that user  i.g., "DAVID" is
>>>>>> added with maintain role.
>>>>>>
>>>>>>
>>>>>> When "DAVID" attempt to create new user  then face
>>>>>> permission/security exception. I don't want to give access of  !admin
>>>>>> (Administrator Workspace) to that user.
>>>>>>
>>>>>> How to resolve permission exception.
>>>>>>
>>>>>> Thanks
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Mon, Jun 23, 2014 at 8:50 AM, Steve Swinsburg <
>>>>>> steve.swinsburg at gmail.com> wrote:
>>>>>>
>>>>>>> As others have suggested, use the api.
>>>>>>>
>>>>>>> Rule of thumb: unless your tool owns the database tables, dont touch
>>>>>>> them with SQL.
>>>>>>>
>>>>>>> You can wrap the api calls with session escalation if required. Know
>>>>>>> what you are doing before you do that though, and how to cleanup.
>>>>>>>
>>>>>>> Cheers
>>>>>>> Steve
>>>>>>>
>>>>>>> sent from my mobile device
>>>>>>> On 21/06/2014 3:09 PM, "Jehan" <jeehaaan at gmail.com> wrote:
>>>>>>>
>>>>>>>>  Dear Johan
>>>>>>>>
>>>>>>>> I want to create a new tool for user creation and password
>>>>>>>> resetting, that tool permission will be given to an academic assistant, who
>>>>>>>> will be able to change password and create new user  of his department
>>>>>>>> only, we cannot give him admin rights/realm, and without admin rights
>>>>>>>> webservices gives permission exception while creating new user.
>>>>>>>>
>>>>>>>> Can you help.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Fri, Jun 20, 2014 at 8:06 PM, John Bush <jbush at anisakai.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> yes but I think it would be several sql calls, but its the wrong
>>>>>>>>> way
>>>>>>>>> to do it,  so I'm not going to give you any details to shoot
>>>>>>>>> yourself
>>>>>>>>> in the foot with.
>>>>>>>>>
>>>>>>>>> On Fri, Jun 20, 2014 at 3:06 AM, Jehan <jeehaaan at gmail.com> wrote:
>>>>>>>>> > Dear All
>>>>>>>>> >
>>>>>>>>> >
>>>>>>>>> > Is it possible to create new user using Sql Query instead of
>>>>>>>>> using
>>>>>>>>> > web-service call.
>>>>>>>>> >
>>>>>>>>> > Thanks
>>>>>>>>> >
>>>>>>>>> > _______________________________________________
>>>>>>>>> > sakai-dev mailing list
>>>>>>>>> > sakai-dev at collab.sakaiproject.org
>>>>>>>>> > http://collab.sakaiproject.org/mailman/listinfo/sakai-dev
>>>>>>>>> >
>>>>>>>>> > TO UNSUBSCRIBE: send email to
>>>>>>>>> sakai-dev-unsubscribe at collab.sakaiproject.org
>>>>>>>>> > with a subject of "unsubscribe"
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> John Bush
>>>>>>>>> 602-490-0470
>>>>>>>>>
>>>>>>>>> ** This message is neither private nor confidential in fact the US
>>>>>>>>> government is storing it in a warehouse located in Utah for future
>>>>>>>>> data mining use cases should they arise. **
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> sakai-dev mailing list
>>>>>>>> sakai-dev at collab.sakaiproject.org
>>>>>>>> http://collab.sakaiproject.org/mailman/listinfo/sakai-dev
>>>>>>>>
>>>>>>>> TO UNSUBSCRIBE: send email to
>>>>>>>> sakai-dev-unsubscribe at collab.sakaiproject.org with a subject of
>>>>>>>> "unsubscribe"
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://collab.sakaiproject.org/pipermail/sakai-dev/attachments/20140624/26610141/attachment.html 


More information about the sakai-dev mailing list