diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,10 @@
+0.4.3.0
+=======
+
+* Implementation for `AuthFindUserByLogin` endpoint.
+* Feature to manipulate with hashes of passwords. For instance, now you can store
+hashed admin password in config.
+
 0.4.2.0
 =======
 
diff --git a/servant-auth-token.cabal b/servant-auth-token.cabal
--- a/servant-auth-token.cabal
+++ b/servant-auth-token.cabal
@@ -1,5 +1,5 @@
 name:                servant-auth-token
-version:             0.4.2.0
+version:             0.4.3.0
 synopsis:            Servant based API and server for token based authorisation
 description:         Please see README.md
 homepage:            https://github.com/ncrashed/servant-auth-token#readme
@@ -55,7 +55,7 @@
     , containers              >= 0.5    && < 0.6
     , mtl                     >= 2.2    && < 2.3
     , pwstore-fast            >= 2.4    && < 2.5
-    , servant-auth-token-api  >= 0.4    && < 0.5
+    , servant-auth-token-api  >= 0.4.2  && < 0.5
     , servant-server          >= 0.9    && < 0.10
     , text                    >= 1.2    && < 1.3
     , time                    >= 1.5    && < 1.7
diff --git a/src/Servant/Server/Auth/Token.hs b/src/Servant/Server/Auth/Token.hs
--- a/src/Servant/Server/Auth/Token.hs
+++ b/src/Servant/Server/Auth/Token.hs
@@ -59,8 +59,12 @@
   , authGroupList
   , authCheckPermissionsMethod
   , authGetUserIdMethod
+  , authFindUserByLogin
   -- * Low-level API
   , getAuthToken
+  , hashPassword
+  , setUserPasswordHash
+  , ensureAdminHash
   ) where
 
 import Control.Monad
@@ -70,6 +74,7 @@
 import Data.Aeson.WithField
 import Data.Maybe
 import Data.Monoid
+import Data.Text (Text)
 import Data.Text.Encoding
 import Data.Time.Clock
 import Data.UUID
@@ -113,6 +118,7 @@
   :<|> authGroupList
   :<|> authCheckPermissionsMethod
   :<|> authGetUserIdMethod
+  :<|> authFindUserByLogin
 
 -- | Implementation of "signin" method
 authSignin :: AuthHandler m
@@ -478,6 +484,15 @@
   strength <- getsConfig passwordsStrength
   setUserPassword' strength pass user
 
+-- | Update password hash of user. Can be used to set direct hash for user password
+-- when it is taken from config file.
+setUserPasswordHash :: AuthHandler m => Text -> UserId -> m ()
+setUserPasswordHash hashedPassword i = do
+  let i' = toKey i
+  user <- guard404 "user" $ getUserImpl i'
+  let user' = user { userImplPassword = hashedPassword }
+  replaceUserImpl i' user'
+
 -- | Getting info about user group, requires 'authInfoPerm' for token
 authGroupGet :: AuthHandler m
   => UserGroupId
@@ -561,3 +576,33 @@
 authGetUserIdMethod token = do
   guardAuthToken token
   OnlyField . respUserId <$> authToken (downgradeToken token)
+
+-- | Implementation of 'AuthFindUserByLogin'. Find user by login, throw 404 error
+-- if cannot find user by such login.
+authFindUserByLogin :: AuthHandler m
+  => Maybe Login -- ^ Login, 'Nothing' will cause 400 error.
+  -> MToken' '["auth-info"]
+  -> m RespUserInfo
+authFindUserByLogin mlogin token = do
+  login <- require "login" mlogin
+  guardAuthToken token
+  userWithId <- guard404 "user" $ getUserImplByLogin login
+  makeUserInfo userWithId
+
+-- | Generate hash from given password and return it as text. May be useful if
+-- you don't like storing unencrypt passwords in config files.
+hashPassword :: AuthHandler m => Password -> m Text
+hashPassword pass = do
+  strength <- getsConfig passwordsStrength
+  hashed <- liftIO $ makePassword (passToByteString pass) strength
+  return $ byteStringToPass hashed
+
+-- | Ensures that DB has at least one admin, if not, creates a new one
+-- with specified info and direct password hash. May be useful if
+-- you don't like storing unencrypt passwords in config files.
+ensureAdminHash :: AuthHandler m => Int -> Login -> Text -> Email -> m ()
+ensureAdminHash strength login passHash email = do
+  madmin <- getFirstUserByPerm adminPerm
+  whenNothing madmin $ do
+    i <- createAdmin strength login "" email
+    setUserPasswordHash passHash $ fromKey i
diff --git a/src/Servant/Server/Auth/Token/Model.hs b/src/Servant/Server/Auth/Token/Model.hs
--- a/src/Servant/Server/Auth/Token/Model.hs
+++ b/src/Servant/Server/Auth/Token/Model.hs
@@ -1,5 +1,3 @@
-{-# LANGUAGE QuasiQuotes                #-}
-{-# LANGUAGE TemplateHaskell            #-}
 {-|
 Module      : Servant.Server.Auth.Token.Model
 Description : Internal operations with RDBMS
@@ -58,6 +56,8 @@
   , updateUserGroup
   , deleteUserGroup
   , patchUserGroup
+  -- * Low-level
+  , makeUserInfo
   ) where
 
 import Control.Monad
diff --git a/stack.yaml b/stack.yaml
--- a/stack.yaml
+++ b/stack.yaml
@@ -15,7 +15,7 @@
 # resolver:
 #  name: custom-snapshot
 #  location: "./custom-snapshot.yaml"
-resolver: lts-8.3
+resolver: lts-8.8
 
 # User packages to be built.
 # Various formats can be used as shown in the example below.
@@ -47,7 +47,7 @@
 #     git: https://github.com/NCrashed/servant-auth-token-api.git
 #     commit: d011f7bfecd18d07ff67ce9f67f8741e110a2719
 #   extra-dep: true
-# - '../servant-auth-token-api'
+- '../servant-auth-token-api'
 
 # Dependency packages to be pulled from upstream that are not in the resolver
 # (e.g., acme-missiles-0.3)
@@ -58,7 +58,7 @@
 - natural-transformation-0.4
 - safecopy-store-0.9.2
 - servant-0.9
-- servant-auth-token-api-0.4.1.0
+- servant-auth-token-api-0.4.2.0
 - servant-docs-0.9
 - servant-server-0.9
 - store-0.3.1
