Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
solo-1
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
solo-1
Commits
f412d2c7
Unverified
Commit
f412d2c7
authored
Sep 21, 2018
by
Liang Ding
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
✨
#12518
parent
6fd37b92
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
54 additions
and
39 deletions
+54
-39
src/main/java/org/b3log/solo/filter/InitCheckFilter.java
src/main/java/org/b3log/solo/filter/InitCheckFilter.java
+7
-12
src/main/java/org/b3log/solo/processor/InitProcessor.java
src/main/java/org/b3log/solo/processor/InitProcessor.java
+8
-10
src/main/java/org/b3log/solo/processor/OAuthGitHubProcessor.java
...n/java/org/b3log/solo/processor/OAuthGitHubProcessor.java
+30
-15
src/main/java/org/b3log/solo/service/InitService.java
src/main/java/org/b3log/solo/service/InitService.java
+9
-2
No files found.
src/main/java/org/b3log/solo/filter/InitCheckFilter.java
View file @
f412d2c7
...
...
@@ -17,6 +17,7 @@
*/
package
org
.
b3log
.
solo
.
filter
;
import
org.apache.commons.lang.StringUtils
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.Latkes
;
import
org.b3log.latke.ioc.LatkeBeanManager
;
...
...
@@ -39,7 +40,7 @@ import java.io.IOException;
* Checks initialization filter.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.1.1.
2, Sep 13, 2016
* @version 1.1.1.
3, Sep 21, 2018
* @since 0.3.1
*/
public
final
class
InitCheckFilter
implements
Filter
{
...
...
@@ -55,7 +56,7 @@ public final class InitCheckFilter implements Filter {
private
static
boolean
initReported
;
@Override
public
void
init
(
final
FilterConfig
filterConfig
)
throws
ServletException
{
public
void
init
(
final
FilterConfig
filterConfig
)
{
}
/**
...
...
@@ -72,8 +73,7 @@ public final class InitCheckFilter implements Filter {
throws
IOException
,
ServletException
{
final
HttpServletRequest
httpServletRequest
=
(
HttpServletRequest
)
request
;
final
String
requestURI
=
httpServletRequest
.
getRequestURI
();
LOGGER
.
log
(
Level
.
TRACE
,
"Request[URI={0}]"
,
requestURI
);
LOGGER
.
log
(
Level
.
TRACE
,
"Request [URI={0}]"
,
requestURI
);
// If requests Latke Remote APIs, skips this filter
if
(
requestURI
.
startsWith
(
Latkes
.
getContextPath
()
+
"/latke/remote"
))
{
...
...
@@ -84,15 +84,15 @@ public final class InitCheckFilter implements Filter {
final
LatkeBeanManager
beanManager
=
Lifecycle
.
getBeanManager
();
final
InitService
initService
=
beanManager
.
getReference
(
InitService
.
class
);
if
(
initService
.
isInited
())
{
chain
.
doFilter
(
request
,
response
);
return
;
}
if
(
"POST"
.
equalsIgnoreCase
(
httpServletRequest
.
getMethod
())
&&
(
Latkes
.
getContextPath
()
+
"/init"
).
equals
(
requestURI
))
{
// Do initailization
if
(
"POST"
.
equalsIgnoreCase
(
httpServletRequest
.
getMethod
())
&&
(
Latkes
.
getContextPath
()
+
"/init"
).
equals
(
requestURI
)
||
StringUtils
.
startsWith
(
requestURI
,
Latkes
.
getContextPath
()
+
"/oauth/github"
))
{
// Do initialization
chain
.
doFilter
(
request
,
response
);
return
;
...
...
@@ -104,21 +104,16 @@ public final class InitCheckFilter implements Filter {
}
final
HTTPRequestContext
context
=
new
HTTPRequestContext
();
context
.
setRequest
((
HttpServletRequest
)
request
);
context
.
setResponse
((
HttpServletResponse
)
response
);
request
.
setAttribute
(
Keys
.
HttpRequest
.
REQUEST_URI
,
Latkes
.
getContextPath
()
+
"/init"
);
request
.
setAttribute
(
Keys
.
HttpRequest
.
REQUEST_METHOD
,
HTTPRequestMethod
.
GET
.
name
());
final
HttpControl
httpControl
=
new
HttpControl
(
DispatcherServlet
.
SYS_HANDLER
.
iterator
(),
context
);
try
{
httpControl
.
nextHandler
();
}
catch
(
final
Exception
e
)
{
context
.
setRenderer
(
new
HTTP500Renderer
(
e
));
}
DispatcherServlet
.
result
(
context
);
}
...
...
src/main/java/org/b3log/solo/processor/InitProcessor.java
View file @
f412d2c7
...
...
@@ -54,7 +54,7 @@ import java.util.Map;
* Solo initialization service.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.2.0.1
3, Sep 20
, 2018
* @version 1.2.0.1
4, Sep 21
, 2018
* @since 0.4.0
*/
@RequestProcessor
...
...
@@ -101,20 +101,14 @@ public class InitProcessor {
}
final
AbstractFreeMarkerRenderer
renderer
=
new
ConsoleRenderer
();
renderer
.
setTemplateName
(
"init.ftl"
);
context
.
setRenderer
(
renderer
);
final
Map
<
String
,
Object
>
dataModel
=
renderer
.
getDataModel
();
final
Map
<
String
,
String
>
langs
=
langPropsService
.
getAll
(
Locales
.
getLocale
(
request
));
dataModel
.
putAll
(
langs
);
dataModel
.
put
(
Common
.
VERSION
,
SoloServletListener
.
VERSION
);
dataModel
.
put
(
Common
.
STATIC_RESOURCE_VERSION
,
Latkes
.
getStaticResourceVersion
());
dataModel
.
put
(
Common
.
YEAR
,
String
.
valueOf
(
Calendar
.
getInstance
().
get
(
Calendar
.
YEAR
)));
Keys
.
fillRuntime
(
dataModel
);
filler
.
fillMinified
(
dataModel
);
}
...
...
@@ -129,7 +123,8 @@ public class InitProcessor {
* {
* "userName": "",
* "userEmail": "",
* "userPassword": ""
* "userPassword": "",
* "userAvatar": "" // optional
* }
* @throws Exception exception
*/
...
...
@@ -151,7 +146,6 @@ public class InitProcessor {
final
String
userName
=
requestJSONObject
.
optString
(
User
.
USER_NAME
);
final
String
userEmail
=
requestJSONObject
.
optString
(
User
.
USER_EMAIL
);
final
String
userPassword
=
requestJSONObject
.
optString
(
User
.
USER_PASSWORD
);
if
(
StringUtils
.
isBlank
(
userName
)
||
StringUtils
.
isBlank
(
userEmail
)
||
StringUtils
.
isBlank
(
userPassword
)
||
!
Strings
.
isEmail
(
userEmail
))
{
ret
.
put
(
Keys
.
MSG
,
"Init failed, please check your input"
);
...
...
@@ -176,7 +170,11 @@ public class InitProcessor {
admin
.
put
(
User
.
USER_EMAIL
,
userEmail
);
admin
.
put
(
User
.
USER_ROLE
,
Role
.
ADMIN_ROLE
);
admin
.
put
(
User
.
USER_PASSWORD
,
userPassword
);
admin
.
put
(
UserExt
.
USER_AVATAR
,
Thumbnails
.
getGravatarURL
(
userEmail
,
"128"
));
String
avatar
=
requestJSONObject
.
optString
(
UserExt
.
USER_AVATAR
);
if
(
StringUtils
.
isBlank
(
avatar
))
{
avatar
=
Thumbnails
.
getGravatarURL
(
userEmail
,
"128"
);
}
admin
.
put
(
UserExt
.
USER_AVATAR
,
avatar
);
Sessions
.
login
(
request
,
response
,
admin
);
...
...
src/main/java/org/b3log/solo/processor/OAuthGitHubProcessor.java
View file @
f412d2c7
...
...
@@ -107,6 +107,12 @@ public class OAuthGitHubProcessor {
@Inject
private
PreferenceQueryService
preferenceQueryService
;
/**
* Initialization service.
*/
@Inject
private
InitService
initService
;
/**
* Redirects to GitHub auth page.
*
...
...
@@ -171,6 +177,14 @@ public class OAuthGitHubProcessor {
final
String
splitChar
=
":@:"
;
final
String
oAuthPair
=
getOAuthPair
(
githubAuths
,
openId
);
// openId:@:userId
if
(
StringUtils
.
isBlank
(
oAuthPair
))
{
if
(!
initService
.
isInited
())
{
final
JSONObject
initReq
=
new
JSONObject
();
initReq
.
put
(
User
.
USER_NAME
,
userName
);
initReq
.
put
(
User
.
USER_EMAIL
,
userEmail
);
initReq
.
put
(
User
.
USER_PASSWORD
,
RandomStringUtils
.
randomAlphanumeric
(
8
));
initReq
.
put
(
UserExt
.
USER_AVATAR
,
userAvatar
);
initService
.
init
(
initReq
);
}
else
{
final
JSONObject
preference
=
preferenceQueryService
.
getPreference
();
if
(!
preference
.
optBoolean
(
Option
.
ID_C_ALLOW_REGISTER
))
{
response
.
sendError
(
HttpServletResponse
.
SC_FORBIDDEN
);
...
...
@@ -178,20 +192,21 @@ public class OAuthGitHubProcessor {
return
;
}
final
JSONObject
addUserReq
=
new
JSONObject
();
addUserReq
.
put
(
User
.
USER_NAME
,
userName
);
addUserReq
.
put
(
User
.
USER_EMAIL
,
userEmail
);
addUserReq
.
put
(
User
.
USER_PASSWORD
,
RandomStringUtils
.
randomAlphanumeric
(
8
));
addUserReq
.
put
(
UserExt
.
USER_AVATAR
,
userAvatar
);
addUserReq
.
put
(
User
.
USER_ROLE
,
Role
.
VISITOR_ROLE
);
final
String
userId
=
userMgmtService
.
addUser
(
addUserReq
);
userMgmtService
.
addUser
(
addUserReq
);
}
final
JSONObject
user
=
userQueryService
.
getUserByEmailOrUserName
(
userName
);
final
String
userId
=
user
.
optString
(
Keys
.
OBJECT_ID
);
githubAuths
.
add
(
openId
+
splitChar
+
userId
);
oauthGitHubOpt
.
put
(
Option
.
OPTION_VALUE
,
githubAuths
);
optionMgmtService
.
addOrUpdateOption
(
oauthGitHubOpt
);
final
JSONObject
user
=
userQueryService
.
getUser
(
userId
);
Sessions
.
login
(
request
,
response
,
user
);
response
.
sendRedirect
(
Latkes
.
getServePath
());
LOGGER
.
log
(
Level
.
INFO
,
"Logged in [email={0}, remoteAddr={1}] with GitHub oauth"
,
userEmail
,
Requests
.
getRemoteAddr
(
request
));
...
...
src/main/java/org/b3log/solo/service/InitService.java
View file @
f412d2c7
...
...
@@ -19,6 +19,7 @@ package org.b3log.solo.service;
import
jodd.http.HttpRequest
;
import
org.apache.commons.codec.digest.DigestUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.apache.commons.lang.time.DateFormatUtils
;
import
org.apache.commons.lang.time.DateUtils
;
import
org.b3log.latke.Keys
;
...
...
@@ -187,6 +188,7 @@ public class InitService {
* "userName": "",
* "userEmail": "",
* "userPassword": "", // Unhashed
* "userAvatar": "" // optional
* }
* @throws ServiceException service exception
*/
...
...
@@ -458,7 +460,8 @@ public class InitService {
* {
* "userName": "",
* "userEmail": "",
* "userPassowrd": "" // Unhashed
* "userPassowrd": "", // Unhashed
* "userAvatar": "" // optional
* }
* @throws Exception exception
*/
...
...
@@ -473,7 +476,11 @@ public class InitService {
admin
.
put
(
User
.
USER_PASSWORD
,
DigestUtils
.
md5Hex
(
requestJSONObject
.
getString
(
User
.
USER_PASSWORD
)));
admin
.
put
(
UserExt
.
USER_ARTICLE_COUNT
,
0
);
admin
.
put
(
UserExt
.
USER_PUBLISHED_ARTICLE_COUNT
,
0
);
admin
.
put
(
UserExt
.
USER_AVATAR
,
Thumbnails
.
getGravatarURL
(
requestJSONObject
.
getString
(
User
.
USER_EMAIL
),
"128"
));
String
avatar
=
requestJSONObject
.
optString
(
UserExt
.
USER_AVATAR
);
if
(
StringUtils
.
isBlank
(
avatar
))
{
avatar
=
Thumbnails
.
getGravatarURL
(
requestJSONObject
.
getString
(
User
.
USER_EMAIL
),
"128"
);
}
admin
.
put
(
UserExt
.
USER_AVATAR
,
avatar
);
userRepository
.
add
(
admin
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
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 comment