Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
H
haskell-gargantext
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
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
Przemyslaw Kaminski
haskell-gargantext
Commits
042ce89f
Commit
042ce89f
authored
Mar 11, 2022
by
Alexandre Delanoë
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[FIX] UserInfo page get and update, Password hidden in the logs
parent
d4e9ee25
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
50 additions
and
16 deletions
+50
-16
Auth.hs
bin/gargantext-client/Auth.hs
+1
-1
Auth.hs
src/Gargantext/API/Admin/Auth.hs
+1
-1
UserInfo.hs
src/Gargantext/API/GraphQL/UserInfo.hs
+11
-9
Individu.hs
src/Gargantext/Core/Types/Individu.hs
+3
-0
Select.hs
src/Gargantext/Database/Query/Table/Node/Select.hs
+1
-1
User.hs
src/Gargantext/Database/Query/Table/User.hs
+30
-2
User.hs
src/Gargantext/Database/Schema/User.hs
+3
-2
No files found.
bin/gargantext-client/Auth.hs
View file @
042ce89f
...
@@ -35,7 +35,7 @@ withAuthToken opts act
...
@@ -35,7 +35,7 @@ withAuthToken opts act
maybe
""
(
show
.
Auth
.
_authInv_message
)
maybe
""
(
show
.
Auth
.
_authInv_message
)
(
Auth
.
_authRes_inval
authRes
)
(
Auth
.
_authRes_inval
authRes
)
-- authentication went through, we can run the action
-- authentication went through, we can run the action
Just
(
Auth
.
AuthValid
tok
tree_id
)
->
do
Just
(
Auth
.
AuthValid
tok
tree_id
_uid
)
->
do
let
tok'
=
SA
.
Token
(
encodeUtf8
tok
)
let
tok'
=
SA
.
Token
(
encodeUtf8
tok
)
whenVerbose
opts
$
do
whenVerbose
opts
$
do
liftIO
.
putStrLn
$
"[Debug] Authenticated: token="
++
show
tok
++
liftIO
.
putStrLn
$
"[Debug] Authenticated: token="
++
show
tok
++
...
...
src/Gargantext/API/Admin/Auth.hs
View file @
042ce89f
...
@@ -70,7 +70,7 @@ checkAuthRequest u (GargPassword p) = do
...
@@ -70,7 +70,7 @@ checkAuthRequest u (GargPassword p) = do
candidate
<-
head
<$>
getUsersWith
u
candidate
<-
head
<$>
getUsersWith
u
case
candidate
of
case
candidate
of
Nothing
->
pure
InvalidUser
Nothing
->
pure
InvalidUser
Just
(
UserLight
id
_u
_email
h
)
->
Just
(
UserLight
id
_u
_email
(
GargPassword
h
)
)
->
case
Auth
.
checkPassword
(
Auth
.
mkPassword
p
)
(
Auth
.
PasswordHash
h
)
of
case
Auth
.
checkPassword
(
Auth
.
mkPassword
p
)
(
Auth
.
PasswordHash
h
)
of
Auth
.
PasswordCheckFail
->
pure
InvalidPassword
Auth
.
PasswordCheckFail
->
pure
InvalidPassword
Auth
.
PasswordCheckSuccess
->
do
Auth
.
PasswordCheckSuccess
->
do
...
...
src/Gargantext/API/GraphQL/UserInfo.hs
View file @
042ce89f
...
@@ -37,11 +37,11 @@ import Gargantext.Database.Admin.Types.Hyperdata.Contact
...
@@ -37,11 +37,11 @@ import Gargantext.Database.Admin.Types.Hyperdata.Contact
,
ct_phone
,
ct_phone
,
hc_who
,
hc_who
,
hc_where
)
,
hc_where
)
import
Gargantext.Database.Admin.Types.Node
(
NodeId
(
..
))
import
Gargantext.Database.Prelude
(
HasConnectionPool
,
HasConfig
)
import
Gargantext.Database.Prelude
(
HasConnectionPool
,
HasConfig
)
import
Gargantext.Database.Query.Table.Node.UpdateOpaleye
(
updateHyperdata
)
import
Gargantext.Database.Query.Table.Node.UpdateOpaleye
(
updateHyperdata
)
import
Gargantext.Database.Query.Table.User
(
getUsersWithHyperdata
)
import
Gargantext.Database.Query.Table.User
(
getUsersWithHyperdata
,
getUsersWithNodeHyperdata
)
import
Gargantext.Database.Schema.User
(
UserLight
(
..
))
import
Gargantext.Database.Schema.User
(
UserLight
(
..
))
import
Gargantext.Database.Schema.Node
(
node_id
,
node_hyperdata
)
import
Gargantext.Prelude
import
Gargantext.Prelude
import
GHC.Generics
(
Generic
)
import
GHC.Generics
(
Generic
)
...
@@ -72,7 +72,7 @@ data UserInfoArgs
...
@@ -72,7 +72,7 @@ data UserInfoArgs
-- | Arguments to the "user info" mutation,
-- | Arguments to the "user info" mutation,
data
UserInfoMArgs
data
UserInfoMArgs
=
UserInfoMArgs
=
UserInfoMArgs
{
ui_id
::
Int
{
ui_id
::
Int
,
ui_username
::
Maybe
Text
,
ui_username
::
Maybe
Text
,
ui_email
::
Maybe
Text
,
ui_email
::
Maybe
Text
,
ui_title
::
Maybe
Text
,
ui_title
::
Maybe
Text
...
@@ -102,12 +102,13 @@ updateUserInfo
...
@@ -102,12 +102,13 @@ updateUserInfo
::
(
HasConnectionPool
env
,
HasConfig
env
,
HasMail
env
)
::
(
HasConnectionPool
env
,
HasConfig
env
,
HasMail
env
)
=>
UserInfoMArgs
->
ResolverM
e
(
GargM
env
GargError
)
Int
=>
UserInfoMArgs
->
ResolverM
e
(
GargM
env
GargError
)
Int
updateUserInfo
(
UserInfoMArgs
{
ui_id
,
..
})
=
do
updateUserInfo
(
UserInfoMArgs
{
ui_id
,
..
})
=
do
lift
$
printDebug
"[updateUserInfo] ui_id"
ui_id
--
lift $ printDebug "[updateUserInfo] ui_id" ui_id
users
<-
lift
(
getUsersWithHyperdata
ui_id
)
users
<-
lift
(
getUsersWith
Node
Hyperdata
ui_id
)
case
users
of
case
users
of
[]
->
panic
$
"[updateUserInfo] User with id "
<>
(
T
.
pack
$
show
ui_id
)
<>
" doesn't exist."
[]
->
panic
$
"[updateUserInfo] User with id "
<>
(
T
.
pack
$
show
ui_id
)
<>
" doesn't exist."
((
u
,
u_hyperdata
)
:
_
)
->
do
((
u
,
node_u
)
:
_
)
->
do
lift
$
printDebug
"[updateUserInfo] u"
u
let
u_hyperdata
=
node_u
^.
node_hyperdata
-- lift $ printDebug "[updateUserInfo] u" u
let
u_hyperdata'
=
uh
ui_titleL
ui_title
$
let
u_hyperdata'
=
uh
ui_titleL
ui_title
$
uh
ui_sourceL
ui_source
$
uh
ui_sourceL
ui_source
$
uh
ui_cwFirstNameL
ui_cwFirstName
$
uh
ui_cwFirstNameL
ui_cwFirstName
$
...
@@ -121,8 +122,8 @@ updateUserInfo (UserInfoMArgs { ui_id, .. }) = do
...
@@ -121,8 +122,8 @@ updateUserInfo (UserInfoMArgs { ui_id, .. }) = do
uh
ui_cwTouchMailL
ui_cwTouchMail
$
uh
ui_cwTouchMailL
ui_cwTouchMail
$
uh
ui_cwTouchPhoneL
ui_cwTouchPhone
$
uh
ui_cwTouchPhoneL
ui_cwTouchPhone
$
u_hyperdata
u_hyperdata
lift
$
printDebug
"[updateUserInfo] with firstName"
u_hyperdata'
--
lift $ printDebug "[updateUserInfo] with firstName" u_hyperdata'
_
<-
lift
$
updateHyperdata
(
NodeId
ui
_id
)
u_hyperdata'
_
<-
lift
$
updateHyperdata
(
node_u
^.
node
_id
)
u_hyperdata'
--let _newUser = toUser (u, u_hyperdata')
--let _newUser = toUser (u, u_hyperdata')
pure
1
pure
1
where
where
...
@@ -136,6 +137,7 @@ dbUsers
...
@@ -136,6 +137,7 @@ dbUsers
::
(
HasConnectionPool
env
,
HasConfig
env
,
HasMail
env
)
::
(
HasConnectionPool
env
,
HasConfig
env
,
HasMail
env
)
=>
Int
->
GqlM
e
env
[
UserInfo
]
=>
Int
->
GqlM
e
env
[
UserInfo
]
dbUsers
user_id
=
do
dbUsers
user_id
=
do
-- lift $ printDebug "[dbUsers]" user_id
-- user <- getUsersWithId user_id
-- user <- getUsersWithId user_id
-- hyperdata <- getUserHyperdata user_id
-- hyperdata <- getUserHyperdata user_id
-- lift (map toUser <$> zip user hyperdata)
-- lift (map toUser <$> zip user hyperdata)
...
...
src/Gargantext/Core/Types/Individu.hs
View file @
042ce89f
...
@@ -34,6 +34,9 @@ type HashPassword = Auth.PasswordHash Auth.Argon2
...
@@ -34,6 +34,9 @@ type HashPassword = Auth.PasswordHash Auth.Argon2
newtype
GargPassword
=
GargPassword
Text
newtype
GargPassword
=
GargPassword
Text
deriving
(
Generic
)
deriving
(
Generic
)
toGargPassword
::
Text
->
GargPassword
toGargPassword
x
=
GargPassword
x
instance
Show
GargPassword
where
instance
Show
GargPassword
where
show
(
GargPassword
_
)
=
"*GargPassword*"
show
(
GargPassword
_
)
=
"*GargPassword*"
...
...
src/Gargantext/Database/Query/Table/Node/Select.hs
View file @
042ce89f
...
@@ -26,7 +26,7 @@ import Gargantext.Database.Schema.Node
...
@@ -26,7 +26,7 @@ import Gargantext.Database.Schema.Node
import
Gargantext.Database.Schema.User
import
Gargantext.Database.Schema.User
import
Gargantext.Database.Query.Table.User
import
Gargantext.Database.Query.Table.User
selectNodesWithUsername
::
HasDBid
NodeType
=>
NodeType
->
Username
->
Cmd
err
[
NodeId
]
selectNodesWithUsername
::
NodeType
->
Username
->
Cmd
err
[
NodeId
]
selectNodesWithUsername
nt
u
=
runOpaQuery
(
q
u
)
selectNodesWithUsername
nt
u
=
runOpaQuery
(
q
u
)
where
where
q
u'
=
proc
()
->
do
q
u'
=
proc
()
->
do
...
...
src/Gargantext/Database/Query/Table/User.hs
View file @
042ce89f
...
@@ -25,6 +25,7 @@ module Gargantext.Database.Query.Table.User
...
@@ -25,6 +25,7 @@ module Gargantext.Database.Query.Table.User
,
queryUserTable
,
queryUserTable
,
getUserHyperdata
,
getUserHyperdata
,
getUsersWithHyperdata
,
getUsersWithHyperdata
,
getUsersWithNodeHyperdata
,
getUser
,
getUser
,
insertNewUsers
,
insertNewUsers
,
selectUsersLightWith
,
selectUsersLightWith
...
@@ -44,9 +45,11 @@ import Data.Text (Text)
...
@@ -44,9 +45,11 @@ import Data.Text (Text)
import
Data.Time
(
UTCTime
)
import
Data.Time
(
UTCTime
)
import
Gargantext.Core.Types.Individu
import
Gargantext.Core.Types.Individu
import
qualified
Gargantext.Prelude.Crypto.Auth
as
Auth
import
qualified
Gargantext.Prelude.Crypto.Auth
as
Auth
import
Gargantext.Database.Admin.Config
(
nodeTypeId
)
import
Gargantext.Database.Admin.Types.Hyperdata
(
HyperdataUser
)
import
Gargantext.Database.Admin.Types.Hyperdata
(
HyperdataUser
)
import
Gargantext.Database.Admin.Types.Node
(
NodeType
(
NodeUser
),
Node
)
import
Gargantext.Database.Prelude
import
Gargantext.Database.Prelude
import
Gargantext.Database.Schema.Node
(
node_hyperdata
,
node_id
,
queryNodeTabl
e
)
import
Gargantext.Database.Schema.Node
(
NodeRead
,
node_hyperdata
,
queryNodeTable
,
node_user_id
,
node_typenam
e
)
import
Gargantext.Database.Schema.User
import
Gargantext.Database.Schema.User
import
Gargantext.Prelude
import
Gargantext.Prelude
import
Opaleye
import
Opaleye
...
@@ -123,14 +126,39 @@ getUserHyperdata i = do
...
@@ -123,14 +126,39 @@ getUserHyperdata i = do
selectUserHyperdataWithId
::
Int
->
Select
(
Column
SqlJsonb
)
selectUserHyperdataWithId
::
Int
->
Select
(
Column
SqlJsonb
)
selectUserHyperdataWithId
i'
=
proc
()
->
do
selectUserHyperdataWithId
i'
=
proc
()
->
do
row
<-
queryNodeTable
-<
()
row
<-
queryNodeTable
-<
()
restrict
-<
row
^.
node_id
.==
(
sqlInt4
i'
)
restrict
-<
row
^.
node_user_id
.==
(
sqlInt4
i'
)
restrict
-<
row
^.
node_typename
.==
(
sqlInt4
$
nodeTypeId
NodeUser
)
returnA
-<
row
^.
node_hyperdata
returnA
-<
row
^.
node_hyperdata
getUserNodeHyperdata
::
Int
->
Cmd
err
[
Node
HyperdataUser
]
getUserNodeHyperdata
i
=
do
runOpaQuery
(
selectUserHyperdataWithId
i
)
where
selectUserHyperdataWithId
::
Int
->
Select
NodeRead
selectUserHyperdataWithId
i'
=
proc
()
->
do
row
<-
queryNodeTable
-<
()
restrict
-<
row
^.
node_user_id
.==
(
sqlInt4
i'
)
restrict
-<
row
^.
node_typename
.==
(
sqlInt4
$
nodeTypeId
NodeUser
)
returnA
-<
row
getUsersWithHyperdata
::
Int
->
Cmd
err
[(
UserLight
,
HyperdataUser
)]
getUsersWithHyperdata
::
Int
->
Cmd
err
[(
UserLight
,
HyperdataUser
)]
getUsersWithHyperdata
i
=
do
getUsersWithHyperdata
i
=
do
u
<-
getUsersWithId
i
u
<-
getUsersWithId
i
h
<-
getUserHyperdata
i
h
<-
getUserHyperdata
i
-- printDebug "[getUsersWithHyperdata]" (u,h)
pure
$
zip
u
h
getUsersWithNodeHyperdata
::
Int
->
Cmd
err
[(
UserLight
,
Node
HyperdataUser
)]
getUsersWithNodeHyperdata
i
=
do
u
<-
getUsersWithId
i
h
<-
getUserNodeHyperdata
i
-- printDebug "[getUsersWithHyperdata]" (u,h)
pure
$
zip
u
h
pure
$
zip
u
h
------------------------------------------------------------------
------------------------------------------------------------------
-- | Select User with some parameters
-- | Select User with some parameters
-- Not optimized version
-- Not optimized version
...
...
src/Gargantext/Database/Schema/User.hs
View file @
042ce89f
...
@@ -25,6 +25,7 @@ import Data.Text (Text)
...
@@ -25,6 +25,7 @@ import Data.Text (Text)
import
Data.Time
(
UTCTime
)
import
Data.Time
(
UTCTime
)
import
qualified
Gargantext.API.GraphQL.Utils
as
GAGU
import
qualified
Gargantext.API.GraphQL.Utils
as
GAGU
import
Gargantext.Core.Utils.Prefix
(
unPrefix
)
import
Gargantext.Core.Utils.Prefix
(
unPrefix
)
import
Gargantext.Core.Types.Individu
(
GargPassword
,
toGargPassword
)
import
Gargantext.Database.Prelude
(
fromField'
)
import
Gargantext.Database.Prelude
(
fromField'
)
import
Gargantext.Prelude
import
Gargantext.Prelude
import
GHC.Generics
(
Generic
)
import
GHC.Generics
(
Generic
)
...
@@ -43,14 +44,14 @@ import Opaleye.Internal.Table (Table(..))
...
@@ -43,14 +44,14 @@ import Opaleye.Internal.Table (Table(..))
data
UserLight
=
UserLight
{
userLight_id
::
!
Int
data
UserLight
=
UserLight
{
userLight_id
::
!
Int
,
userLight_username
::
!
Text
,
userLight_username
::
!
Text
,
userLight_email
::
!
Text
,
userLight_email
::
!
Text
,
userLight_password
::
!
Text
,
userLight_password
::
!
GargPassword
}
deriving
(
Show
,
Generic
)
}
deriving
(
Show
,
Generic
)
instance
GQLType
UserLight
where
instance
GQLType
UserLight
where
typeOptions
_
=
GAGU
.
unPrefix
"userLight_"
typeOptions
_
=
GAGU
.
unPrefix
"userLight_"
toUserLight
::
UserDB
->
UserLight
toUserLight
::
UserDB
->
UserLight
toUserLight
(
UserDB
id
p
_
_
u
_
_
e
_
_
_
)
=
UserLight
id
u
e
p
toUserLight
(
UserDB
id
p
_
_
u
_
_
e
_
_
_
)
=
UserLight
id
u
e
(
toGargPassword
p
)
data
UserPoly
id
pass
llogin
suser
data
UserPoly
id
pass
llogin
suser
...
...
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