Giter Site home page Giter Site logo

erudika / scoold Goto Github PK

View Code? Open in Web Editor NEW
813.0 23.0 235.0 10.15 MB

A Stack Overflow clone for teams (self-hosted or hosted)

Home Page: https://scoold.com

License: Apache License 2.0

Java 86.30% CSS 5.34% JavaScript 7.08% Shell 0.46% HTML 0.60% Dockerfile 0.06% Mustache 0.13% Procfile 0.01%
stackoverflow stackoverflow-questions questions-and-answers java spring-boot clone scoold forum forums forum-software

scoold's People

Contributors

albogdano avatar arthmoeros avatar aryankhandal0 avatar bitnot avatar cadamini avatar dave08 avatar ensecoz avatar fpellet avatar kobus-v-schoor avatar liuyx11241 avatar lostkatana avatar mandejan avatar marcinjahn avatar mickge avatar mortenaanaes avatar mozyok avatar rakeshgopathi avatar rampatra avatar rberends avatar rillig avatar sadeghtkd avatar sau226 avatar showaid avatar trishajariwala avatar viking1972 avatar vovidez avatar vprozorovskyi avatar weisjohn avatar yuikotakada avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

scoold's Issues

Tag limit

Where do I set the limit of tag associated to one post?

Feature Request: LDAP integration

Hello Guys,

Scoold looks great! Do you think it is useful to integrate with LDAP or Active Directory? I think it is a must if it is going to be used by most organizations (the popularity of G Suite notwithstanding). I also don't think there are many Question CMSes that have this feature.

Best regards!

RTL support

Hello,

Happy new year,

Does Scoold support rtl languages like Arabic ?
If No, please elaborate a little bit on what I should focus on in terms of components that needed to be altered to implement the rtl support.

Cordially.

Themed Translations

We want to use sccold for our car-diagnostics forum. Therefore we'd like to make our own translation with car-themed name-tags at buttons. should we do this locally or also make a pullrequest to you repo? Maybe it's a fun thing to see for other users and give them some creative influence?

Running scoold with para running locally?

Hi, I want to run scoold with para running on the same machine. So, what I need to do is:

  1. Clone/get the latest war from para github.
  2. Edit the application.conf file for para and run para.
  3. Make scoold use the para running on the same machine.

Is this the right way? Is there any way to make para run within scoold itself so that I don't have to worry about running/starting para?

And also, do I have to setup/install any database for para to run or is it taken care automatically by para?

Question doesn't show on custom space.

Hi @albogdano,

I found out an issue about question.
The question which is asked on a custom space(e.g. SpaceA) doesn't show on the space.

screenshot - 2018-02-14 10_47_37
=> The question is for SpaceA

screenshot - 2018-02-14 10_48_14
=> The name of space seems wrong after the save.

screenshot - 2018-02-14 10_48_37
=> The question doesn't appear in SpaceA

screenshot - 2018-02-14 10_48_59
=> It's showing on the default space instead.

Please look into this.
Thank you!

Null pointer exception

Dear Erudika,

I don't know whether you notice this issue, but NullPointerException happens when I try to login before a cookie was made.

screenshot - 2018-01-24 2_21_51

It's easy to reproduce the error:

  1. Open a browser(e.g. chrome) in a secret mode.
  2. Try to login scoold.
  3. That's it!

Exception is as below:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) at javax.servlet.http.HttpServlet.service(HttpServlet.java:687) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:848) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1772) at com.erudika.scoold.utils.CsrfFilter.doFilter(CsrfFilter.java:88) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759) at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:105) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759) at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:582) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134) at org.eclipse.jetty.server.Server.handle(Server.java:534) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:283) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:110) at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93) at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303) at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148) at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671) at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.NullPointerException: null at com.erudika.scoold.controllers.QuestionsController.getQuestions(QuestionsController.java:199) at com.erudika.scoold.controllers.QuestionsController.get(QuestionsController.java:69) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:116) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) ... 42 common frames omitted

Odd / incorrect country names on language selection page

Running Scoold v1.29.0, accessing from Firefox ESR on Linux (though that probably doesn't matter).

On the /languages page, the country names of some languages are incorrect (or at least unexpected):
See attached screenshot (German -> Greece, Spanish -> Peru, and possibly more - I haven't checked).

It seems related to the choice of locale names: At the translation page (e.g. at /translate/de), the URLs for each word / sentence contain de_GR, while it should probably be de_DE instead.

x

Problem logging in with Microsoft

Hi,
I set up Scoold on my local box, para is running on the same machine and I want to use the Microsoft login.

I created a new application on my Microsoft page and put the app id and the secret on the application.conf, when I try to login with Microsoft it redirects me to the MS login page, but the final redirect goes in error:

AADSTS50011: The reply address 'http://localhost:8080/microsoft_auth' does not match the reply addresses configured for the application

In my application on MS I set the redirect url to http://localhost:8000/microsoft_auth, I dont know why it uses the port 8080 for the redirect.

The attached conf file has been renamed because github wants .txt

application.conf.txt

Static files are not correctly served when using para.context_path

Hi,

I'm setting the property para.context_path to /qa:

para.context_path = "/qa"

But inspecting the HTML code, I can see that static files are being serving this way:

<link href="/qahttp://localhost/styles/style.css" rel="stylesheet" media="screen">

instead of:

<link href="http://localhost/qa/styles/style.css" rel="stylesheet" media="screen">

Thank you.

NPE when selecting a language with 0% coverage

When I click a language which doesn't have any translation yet, it throws a NPE. Below is the details stacktrace:

2018-05-28 06:40:24 [WARN ] 
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982)
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:848)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1772)
        at com.erudika.scoold.utils.CsrfFilter.doFilter(CsrfFilter.java:88)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759)
        at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759)
        at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:105)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759)
        at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759)
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759)
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:582)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180)
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512)
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
        at org.eclipse.jetty.server.Server.handle(Server.java:534)
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320)
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251)
        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:283)
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:110)
        at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93)
        at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303)
        at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148)
        at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589)
        at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException: null
        at com.erudika.scoold.utils.LanguageUtils.getTranslationProgressMap(LanguageUtils.java:262)
        at com.erudika.scoold.controllers.LanguagesController.get(LanguagesController.java:56)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:116)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
        ... 42 common frames omitted

How could I get the database model?

Hello everyone ,
I've been researching scoold for several days, what I've got is that scoold is a web site that contains frontpages and controllers only. And scoold get the datas from para service through http calls. So, how could I get the whole scoold database model?

Support spaces

Dear scoold Team,

If I see correctly, currently scoold does not support "spaces" (i.e., different groups of questions, let is be one for each department (scoold space for Dev, Infra, HR, etc.), for each language (scoold space for Java, .NET, Python, etc., etc.), for each in-house project, etc.).

Would this be something meaningful to add? I haven't looked too much into the details of the implementation yet, but I think it's not too much work to introduce, or is it?

thrown MongoWriteException when launch scoold if enabled MongoDB integration

I've written docker-compose.yml with some Dockerfile.
Simple setup(para+scoold) is fine.
But if setting up para with para-dao-mongodb-1.25.1-shaded.jar, MongoDB raises MongoWriteException when write settings.

Updates Enforce Field Name Restrictions says:

Updates no longer support saving field names that contain a dot (.)
or a field name that starts with a dollar sign ($).

scoold_1     | 2017-10-10 05:57:32 [INFO ] Initialized ParaClient with endpoint http://para:8080 and access key 'app:scoold'.
scoold_1     | 2017-10-10 05:57:32 [DEBUG] PUT /v1/_settings, entity: Entity{entity={gh_app_id=, gh_secret=, security.ldap.bind_dn=, security.ldap.user_dn_pattern=, security.ldap.server_url=, security.ldap.base_dn=, ms_app_id=, security.ldap.bind_pass=, signin_success=http://localhost:8000/signin/success?jwt=?, security.ldap.user_search_filter=, in_app_id=, in_secret=, tw_secret=, security.ldap.user_search_base=, tw_app_id=, security.ldap.active_directory_domain=, ms_secret=, security.ldap.password_attribute=, signin_failure=http://localhost:8000/signin?code=3&error=true}, variant=Variant[mediaType=application/json, language=null, encoding=null], annotations=[]}
para_1       | 2017-10-10 05:57:33 [ERROR] null
para_1       | com.mongodb.MongoWriteException: The dotted field 'security.ldap.bind_dn' in 'settings.security.ldap.bind_dn' is not valid for storage.
para_1       | 	at com.mongodb.MongoCollectionImpl.executeSingleWriteRequest(MongoCollectionImpl.java:558)
para_1       | 	at com.mongodb.MongoCollectionImpl.update(MongoCollectionImpl.java:542)
para_1       | 	at com.mongodb.MongoCollectionImpl.updateOne(MongoCollectionImpl.java:381)
para_1       | 	at com.mongodb.MongoCollectionImpl.updateOne(MongoCollectionImpl.java:376)
para_1       | 	at com.erudika.para.persistence.MongoDBDAO.updateRow(MongoDBDAO.java:161)
para_1       | 	at com.erudika.para.persistence.MongoDBDAO.update(MongoDBDAO.java:124)
para_1       | 	at com.erudika.para.persistence.MongoDBDAO$$EnhancerByGuice$$b90184b4.CGLIB$update$10(<generated>)
para_1       | 	at com.erudika.para.persistence.MongoDBDAO$$EnhancerByGuice$$b90184b4$$FastClassByGuice$$3c2ac843.invoke(<generated>)
para_1       | 	at com.google.inject.internal.cglib.proxy.$MethodProxy.invokeSuper(MethodProxy.java:228)
para_1       | 	at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72)
para_1       | 	at com.erudika.para.aop.IndexAndCacheAspect.addToIndexOperation(IndexAndCacheAspect.java:205)
para_1       | 	at com.erudika.para.aop.IndexAndCacheAspect.handleIndexing(IndexAndCacheAspect.java:150)
para_1       | 	at com.erudika.para.aop.IndexAndCacheAspect.invoke(IndexAndCacheAspect.java:123)
para_1       | 	at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72)
para_1       | 	at com.google.inject.internal.InterceptorStackCallback.intercept(InterceptorStackCallback.java:52)
para_1       | 	at com.erudika.para.persistence.MongoDBDAO$$EnhancerByGuice$$b90184b4.update(<generated>)
para_1       | 	at com.erudika.para.core.App.update(App.java:1059)
para_1       | 	at com.erudika.para.rest.Api1$20.apply(Api1.java:635)
para_1       | 	at com.erudika.para.rest.Api1$20.apply(Api1.java:621)
para_1       | 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
para_1       | 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
para_1       | 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
para_1       | 	at java.lang.reflect.Method.invoke(Method.java:498)
para_1       | 	at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)
para_1       | 	at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144)
para_1       | 	at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161)
para_1       | 	at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:160)
para_1       | 	at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99)
para_1       | 	at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389)
para_1       | 	at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347)
para_1       | 	at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102)
para_1       | 	at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326)
para_1       | 	at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
para_1       | 	at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
para_1       | 	at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
para_1       | 	at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
para_1       | 	at org.glassfish.jersey.internal.Errors.process(Errors.java:267)
para_1       | 	at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)
para_1       | 	at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305)
para_1       | 	at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154)
para_1       | 	at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473)
para_1       | 	at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427)
para_1       | 	at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388)
para_1       | 	at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341)
para_1       | 	at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228)
para_1       | 	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:841)
para_1       | 	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1650)
para_1       | 	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:317)
para_1       | 	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)
para_1       | 	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)
para_1       | 	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
para_1       | 	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114)
para_1       | 	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
para_1       | 	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)
para_1       | 	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
para_1       | 	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)
para_1       | 	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
para_1       | 	at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:158)
para_1       | 	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
para_1       | 	at com.erudika.para.security.RestAuthFilter.doFilter(RestAuthFilter.java:99)
para_1       | 	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
para_1       | 	at com.erudika.para.security.JWTRestfulAuthFilter.doFilter(JWTRestfulAuthFilter.java:125)
para_1       | 	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
para_1       | 	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170)
para_1       | 	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
para_1       | 	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
para_1       | 	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
para_1       | 	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)
para_1       | 	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
para_1       | 	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)
para_1       | 	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
para_1       | 	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)
para_1       | 	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
para_1       | 	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)
para_1       | 	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
para_1       | 	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)
para_1       | 	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
para_1       | 	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)
para_1       | 	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
para_1       | 	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)
para_1       | 	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
para_1       | 	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)
para_1       | 	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
para_1       | 	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)
para_1       | 	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
para_1       | 	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)
para_1       | 	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
para_1       | 	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)
para_1       | 	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
para_1       | 	at org.springframework.security.web.csrf.CsrfFilter.doFilterInternal(CsrfFilter.java:100)
para_1       | 	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
para_1       | 	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
para_1       | 	at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:64)
para_1       | 	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
para_1       | 	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
para_1       | 	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)
para_1       | 	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
para_1       | 	at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)
para_1       | 	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
para_1       | 	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
para_1       | 	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214)
para_1       | 	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177)
para_1       | 	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637)
para_1       | 	at com.erudika.para.utils.filters.CORSFilter.handleNonCORS(CORSFilter.java:415)
para_1       | 	at com.erudika.para.utils.filters.CORSFilter.doFilter(CORSFilter.java:164)
para_1       | 	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637)
para_1       | 	at com.erudika.para.utils.filters.ErrorFilter.doFilter(ErrorFilter.java:59)
para_1       | 	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637)
para_1       | 	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533)
para_1       | 	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
para_1       | 	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
para_1       | 	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
para_1       | 	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:190)
para_1       | 	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)
para_1       | 	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:188)
para_1       | 	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1253)
para_1       | 	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:168)
para_1       | 	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)
para_1       | 	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)
para_1       | 	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:166)
para_1       | 	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1155)
para_1       | 	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
para_1       | 	at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)
para_1       | 	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
para_1       | 	at org.eclipse.jetty.server.Server.handle(Server.java:564)
para_1       | 	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:317)
para_1       | 	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251)
para_1       | 	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:279)
para_1       | 	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:110)
para_1       | 	at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:124)
para_1       | 	at org.eclipse.jetty.util.thread.Invocable.invokePreferred(Invocable.java:128)
para_1       | 	at org.eclipse.jetty.util.thread.Invocable$InvocableExecutor.invoke(Invocable.java:222)
para_1       | 	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:294)
para_1       | 	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:199)
para_1       | 	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:672)
para_1       | 	at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:590)
para_1       | 	at java.lang.Thread.run(Thread.java:748)

Sign commits

I am a collaborator on a repository. Normally I'm used by a CI bot to automatically merge requests but unfortunately it has been unable to merge since for maximum security all our commits must be verified by GPG. Could you please consider signing your commits or using the web interface (github.com) to submit them?

Multiple user accounts with the same email

I am facing a weird issue where there are multiple user accounts with the same email address. The old user got deleted automatically and the new user got created with the same name and email but with a score 0. And I am currently using H2DB in para.

Any ideas why this would be happening?

Bold writing

When I am using ** in a Q or A, it is shown bold in the editor window. As soon as I post it, it doesn't show up bold anymore :(

java.lang.UnsupportedOperationException: Not implemented.

Hello @albogdano,

I hope you have a good day.

Today, I got an exception when I tried to remove an user forcefully.
It's UnsupportedOperationException:

...
Caused by: java.lang.UnsupportedOperationException: Not implemented.
	at com.erudika.para.search.MockSearch.findTerms(MockSearch.java:190)
	at com.erudika.para.core.User.getIdentifiers(User.java:365)
	at com.erudika.para.core.User.delete(User.java:354)
        at com.erudika.scoold.controllers.AdminController.forceDelete(AdminController.java:127)

...

I don't exactly know why, but scoold tries to use MockSearch. It should've been LuceneSearch, right?

The para system generated a log message that it uses LuceneSearch instance.

2018-03-07 11:56:47 �[34m[INFO ]�[0;39m Loaded new DAO, Search and Cache implementations - AWSDynamoDAO, LuceneSearch and CaffeineCache.

Could you take a look at this?

Thank you!

FYI. The scoold version I tested is the most recent commit.

Restrict users to one or more email domains.

In lieu of full SSO support, a nice feature to have in the mean time is to restrict users by email domain. All my users in my company have the same email domain and they are the only users who should be able to use my deployment of scoold.

Unexpected behaviour in e-mail log-in with unregistered address

Hi! I ran into a confusing issue with e-mail auth:

This happens when a user attempts to log in with an unregistered e-mail address (e.g. when making a typo or by forgetting that they hadn't made an account yet):

if e-mail verification is enabled
A verification mail is automatically sent to that address, as if the user was trying to register.
Clicking the verify link creates a new user with the confusing name "ParaObject N" where N is some large ID number.

if e-mail verification is disabled
A new user with a "ParaObject N" name is immediately created and logged in.

In both cases I expected the log-in to simply fail, and that new accounts can only be created on the "register" page.

Thanks for everything so far!

Writing longer answers

When it takes me longer to write an answer, I can still press the post button, but instead of my answer it shows a minipage of the current site.
Looks like the session expired or smth. Can one make this time longer?

Users can't subscribe to their questions

Not sure it's a bug or a feature (I do not like): When a user browse to a question he asked, the "Send new responses on this thread to my email" is invisible. Its a good thing if user checked "Send my an email notification when someone replies to my posts" ... but when this box is not checked, the "Send new responses on this thread to my email" is invisible too.
Tested on scoold 1.25.4.

UI bug when in mobile mode

The sidebar isn't operable as there is an unresponsive overlay preventing any clicks. See the screenshot:

screen shot 2018-05-28 at 14 03 10

Also, the avatar hides beneath the search bar.

Beginner's Issue: Running Scoold locally with Para

I want to run a cloned Scoold project locally with Para.
To describe my struggle so far, I've cloned the Scoold project from GitHub and made a new app on paraio.com and I have also saved the access & secret keys.
What next?
Should I mention my Para keys in app.json or create an application.conf file? If either of the files is to be made then my keys should be mapped to which attribute/variable? And how do I run my project locally after that?

Feature request: Uploading Pictures

Is there a convenient way, to integrate an image-hosting-service so that people that want to upload pictures in questions or answers can do so directly?

Users on default space disappears, etc.

Hi @albogdano,

I am currently testing v1.28.9 and found some issues.

  1. User on default space disappeared
    It seems that users on default space doesn't show.
    screenshot - 2018-02-13 11_07_55
    When I look into this symptom in IDE debug mode, there is a difference between query string(qs) of default space and custom space(e.g. SpaceA).
  • default space : ""
  • custom space: "properties.spaces:"scooldspace:spacea:SpaceA""
  1. Inappropriate value shows in the user search box
    screenshot - 2018-02-13 11_14_16

  2. 404 page not found when I search at side-nav
    screenshot - 2018-02-13 11_18_27

Thank you for your dedication as always!

Admins vs Mods

There are three roles defined in User.class: user, mod, and admin, which all seem to be defined in the "groups" attribute of user objects. Could you explain the difference between admins and moderators?

java.net.UnknownHostException

when scoold tries to send an email i get this error :

2017-12-25T16:29:36.188335+00:00 app[web.1]: 2017-12-25 16:29:36 �[1;31m[ERROR]�[0;39m Failed to send email. Mail server connection failed; nested exception is com.sun.mail.util.MailConnectException: Couldn't connect to host, port: mail.sa9si.ma, 465; timeout -1;
2017-12-25T16:29:36.188348+00:00 app[web.1]:   nested exception is:
2017-12-25T16:29:36.188352+00:00 app[web.1]: 	java.net.UnknownHostException: mail.sa9si.ma. Failed messages: com.sun.mail.util.MailConnectException: Couldn't connect to host, port: mail.sa9si.ma, 465; timeout -1;

here is my config:

para_admin_ident: fb:10213910459065900
PATH: /app/.heroku/bin:/app/.jdk/bin:/usr/local/bin:/usr/bin:/bin
para_security.signin_success: /
para_security.signin_failure: /signin?error=true
para_tw_secret:  
para_security.protected.settings: [/settings, /settings/**]
para_security.signout_success: /signin
para_security_ldap_server_url:  
JAVA_OPTS: -Xmx300m -Xss512k -Dfile.encoding=UTF-8
para_security.signin: /signin
para_gmaps_api_key: AIza***************
para_gh_secret:  
PS1: [\033[01;34m]\w[\033[00m] [\033[01;32m]$ [\033[00m]
para_security.protected.admin: [/admin, /admin/**, [admin]]
para_mail_ssl: false
para_google_client_id: 779213229430-ndknr2j3rs12e2igghb1s0j3fgsskggo.apps.googleusercontent.com
para_host_url: https://sa9si.herokuapp.com
para_in_secret:  
para_security.access_denied: /403
PWD: /app
para_security_ldap_user_dn_pattern:  
para_secret_key: ***************************
para_security_ldap_base_dn:  
para_meta_description: Sa9i.ma is a Q&A platform for the Moroccan Community
para_tw_app_id:  
para_security.csrf_protection: true
para_security.returnto: returnto
PORT: 4220
para_app_name: sa9si
para_security_ldap_bind_dn:  
para_password_auth_enabled: true
para_ms_secret:  
para_csp_header:  
DYNO: web.1
para_mail_username: [email protected]
para_mail_port: 465
para_security.ignored: [/, /images/, /styles/, /scripts/**, /v1/_setup]
SHLVL: 1
para_env: production
para_access_key: app:sa9si
para_ms_app_id:  
para_security_ldap_user_search_base:  
para_security.api_security: true
para_fb_app_id: 149417825779359
para_security_ldap_password_attribute:  
JAVA_HOME: /app/.jdk
XFILESEARCHPATH: /usr/dt/app-defaults/%L/Dt
para_security_ldap_bind_pass:  
JAVA_TOOL_OPTIONS: -Xmx300m -Xss512k -Dfile.encoding=UTF-8
para_mail_host: mail.sa9si.ma
_: /app/.jdk/bin/java
para_security.signout: /signout
para_mail_password: ***************************
para_google_analytics_id:  
para_clients_can_access_root_app: true
para_mail_tls: true
para_in_app_id:  
para_print_logo: true
para_security_ldap_active_directory_domain:  
para_endpoint: https://paraio.com
para_csp_header_enabled: false
para_gh_app_id:  
para_app_secret_key: ***************************
NLSPATH: /usr/dt/lib/nls/msg/%L/%N.cat
para_support_email: [email protected]
para_core_package_name: com.erudika.scoold.core
para_meta_keywords: pc,visa,passport,osra,3a2ila, drari,hayat,telemphone,mochkil,math,khedma,flos,3a9a
para_security.protected.votes: [/votedown/, /voteup/]
HOME: /app
para_security_ldap_user_search_filter:  

Beginner question: Getting Started with Scoold

Hi! I am trying to set up Scoold locally. I have created an app on ParaIO.com, cloned the repo, and configured my application.conf file, but when I try to run it I receive the following warning: "Para configuration file 'application.(conf|json|properties)' is missing from classpath". My config file is in the same folder as the jar (/target), and I have also tried putting it in the main folder, but nothing seems to work. Suggestions? Thanks so much!

ClassCast after login

After a successful login with MS I get this error using Scoold (every page):
2017-05-15 17:16:16 [DEBUG] GET /v1/_id/775008390567956480:profile, params: null
2017-05-15 17:16:16 [WARN ] EXCEPTION
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.ClassCastException: com.erudika.para.core.Sysprop cannot be cast to com.erudika.scoold.core.Profile
at com.erudika.scoold.utils.ScooldUtils.checkAuth(ScooldUtils.java:93)

The server always respond with HTTP 500

"javax.ws.rs.ProcessingException: Error reading entity from input stream" when an user sign in for the first time

A ProcessingException happens when user tries to sign in for the first time.
Please refer to the related stack trace below:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is javax.ws.rs.ProcessingException: Error reading entity from input stream.
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982)
	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:848)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1772)
	at com.erudika.scoold.utils.CsrfFilter.doFilter(CsrfFilter.java:88)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759)
	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759)
	at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:105)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759)
	at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759)
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759)
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:582)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180)
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512)
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
	at org.eclipse.jetty.server.Server.handle(Server.java:534)
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320)
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251)
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:283)
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:110)
	at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93)
	at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303)
	at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148)
	at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589)
	at java.lang.Thread.run(Thread.java:745)
Caused by: javax.ws.rs.ProcessingException: Error reading entity from input stream.
	at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:889)
	at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:808)
	at org.glassfish.jersey.client.ClientResponse.readEntity(ClientResponse.java:321)
	at org.glassfish.jersey.client.InboundJaxrsResponse$1.call(InboundJaxrsResponse.java:115)
	at org.glassfish.jersey.internal.Errors.process(Errors.java:316)
	at org.glassfish.jersey.internal.Errors.process(Errors.java:298)
	at org.glassfish.jersey.internal.Errors.process(Errors.java:229)
	at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:389)
	at org.glassfish.jersey.client.InboundJaxrsResponse.runInScopeIfPossible(InboundJaxrsResponse.java:264)
	at org.glassfish.jersey.client.InboundJaxrsResponse.readEntity(InboundJaxrsResponse.java:112)
	at com.erudika.para.client.ParaClient.getEntity(ParaClient.java:265)
	at com.erudika.para.client.ParaClient.create(ParaClient.java:461)
	at com.erudika.scoold.core.Profile.create(Profile.java:446)
	at com.erudika.scoold.utils.ScooldUtils.checkAuth(ScooldUtils.java:139)
	at com.erudika.scoold.utils.ScooldRequestInterceptor.preHandle(ScooldRequestInterceptor.java:58)
	at org.springframework.web.servlet.HandlerExecutionChain.applyPreHandle(HandlerExecutionChain.java:134)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:958)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
	... 42 common frames omitted
Caused by: com.fasterxml.jackson.databind.JsonMappingException: N/A
 at [Source: org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$UnCloseableInputStream@62187623; line: 21, column: 17] (through reference chain: com.erudika.scoold.core.Profile["spacesSet"])
	at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:277)
	at com.fasterxml.jackson.databind.deser.SettableBeanProperty._throwAsIOE(SettableBeanProperty.java:551)
	at com.fasterxml.jackson.databind.deser.impl.SetterlessProperty.deserializeAndSet(SetterlessProperty.java:115)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:276)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:140)
	at com.fasterxml.jackson.databind.ObjectReader._bind(ObjectReader.java:1583)
	at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:964)
	at com.fasterxml.jackson.jaxrs.base.ProviderBase.readFrom(ProviderBase.java:815)
	at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.invokeReadFrom(ReaderInterceptorExecutor.java:257)
	at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.aroundReadFrom(ReaderInterceptorExecutor.java:236)
	at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor.proceed(ReaderInterceptorExecutor.java:156)
	at org.glassfish.jersey.message.internal.MessageBodyFactory.readFrom(MessageBodyFactory.java:1091)
	at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:874)
	... 60 common frames omitted
Caused by: java.lang.NullPointerException: null
	at java.util.HashSet.<init>(HashSet.java:118)
	at com.erudika.scoold.core.Profile.getSpacesSet(Profile.java:430)
	at sun.reflect.GeneratedMethodAccessor202.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.fasterxml.jackson.databind.deser.impl.SetterlessProperty.deserializeAndSet(SetterlessProperty.java:113)
	... 70 common frames omitted

My environment is using AD. So when a user that doesn't exist in the system signs in, scoold makes a new user. I think it's related to the space feature.

Thank you.

Issue getting google social login to work

I used the deploy to Heroku button, created a new Google client, etc. However when I try to signing in using google I get the error "Authorization failed or was cancelled". There's an error code 3 in the final URL. Tried adding the heroku default domain to the allowed redirects on the Google API.

Can't remove moderator status to a user

Once a user is promoted "moderator", there's a button "Unmake mod" on its profile (see picture below).
When you click on it this button switches briefly to "Make mod" ... and switches again to "Unmake mod". Finally, the user remains moderator.
Tested on scoold 1.25.4.
image

Search function

Hi,

The search function doesn't seem to work properly.
If I search something(e.g. location), it's showing irrelevant posts.
I can reproduce this symptom not only on my local environment but also on live.scoold.com.

screenshot - 2018-02-12 11_39_18

Thank you!

Deploying on Heroku isn't working

I've followed the instructions about deploying the application using Para and Heroku, but I always get stuck when Heroku is deploying the app and then after a while it returns me an error. What am I doing wrong here?

captura de tela de 2017-09-20 23-38-41
captura de tela de 2017-09-20 23-39-10
captura de tela de 2017-09-20 23-39-19
captura de tela de 2017-09-20 23-45-13

Need a scoold-specific user admin area in admin

I know power-users and devs can manage users in Para, but some things are very difficult for normal users. For instance, granting admin privileges to someone is too complicated. We need a way in scoold to just click a button and all our dreams come true. :)

Minor UI bug

The question description overflows outside the container when the text is long enough as shown in the below screenshot. It's taken from the demo scoold application.
scoold_bug

Blocking password change input for LDAP(AD) users

Hi,

Currently, scoold shows password change input box for 'generic' type users on settings page. And it includes the users that those are using LDAP for authentication.

screenshot - 2018-02-01 10_59_55

I think LDAP(AD) authentication doesn't need password change. Because the accounts are authenticated by LDAP(AD) server.

I figured out that the following modification can block password change input for LDAP users.

settings.vm line 42
from
#if($authUser.user.identityProvider == "generic")

to
#if($authUser.user.identityProvider == "generic" && !$authUser.user.identifier.startsWith('ldap:')) )

I thought about a pull request, but it's not such a big modification. So I submit this request here.

Thank you.

adding Tags with <Return>-Key

When asking a new question, adding tags is mandatory. This is fine I guess, but what sucks about it, is that to add a tag, one needs to klick on the droped down menu. Could this be changed in adding the first suggestion by just taking the -Key?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.