diff --git a/Clckwrks/ProfileData/EditProfileDataFor.hs b/Clckwrks/ProfileData/EditProfileDataFor.hs
--- a/Clckwrks/ProfileData/EditProfileDataFor.hs
+++ b/Clckwrks/ProfileData/EditProfileDataFor.hs
@@ -4,21 +4,26 @@
 import Clckwrks
 import Clckwrks.Admin.Template  (template)
 import Clckwrks.ProfileData.Acid (GetProfileData(..), SetProfileData(..))
-import Clckwrks.Authenticate.Monad ()
+import Clckwrks.Authenticate.Monad (AcidStateAuthenticate(..))
+import Clckwrks.Authenticate.URL   (AuthURL(ResetPassword))
+import Control.Monad.State         (get)
 import Data.Maybe               (fromMaybe)
 import Data.Set                 as Set
 import Data.Text.Lazy           (Text)
 import qualified Data.Text.Lazy as LT
 import qualified Data.Text      as Text
 import Data.UserId              (UserId)
+
 import Language.Haskell.HSX.QQ  (hsx)
 import Happstack.Authenticate.Core (Email(..), GetUserByUserId(..), User(..), UserId(..), Username(..))
-import Happstack.Authenticate.Password.Core (SetPassword(..), mkHashedPass)
+import Happstack.Authenticate.Password.Core (SetPassword(..), mkHashedPass, resetTokenForUserId)
 import HSP.XMLGenerator
 import HSP.XML
+import System.FilePath             ((</>))
 import Text.Reform              ((++>), mapView, transformEitherM)
 import Text.Reform.Happstack    (reform)
 import Text.Reform.HSP.Text     (inputCheckboxes, inputPassword, inputText, labelText, inputSubmit, fieldset, ol, li, form, setAttrs)
+import Web.Plugins.Core         (getConfig, getPluginState, getPluginRouteFn)
 
 editProfileDataForPage :: ProfileDataURL -> UserId -> Clck ProfileDataURL Response
 editProfileDataForPage here uid =
@@ -44,12 +49,54 @@
                  <% reform (form action) "epd" updated Nothing (profileDataFormlet pd) %>
                  <h2>Update User's Password</h2>
                  <% reform (form action) "pf"  updated Nothing (passwordForFormlet uid) %>
+                 <h2>Generate Password Reset Link</h2>
+                 <% reform (form action) "prl"  (generateResetLink uid) Nothing generateResetLinkFormlet %>
                </div>
                |]
     where
       updated :: () -> Clck ProfileDataURL Response
       updated () =
           do seeOtherURL here
+
+      generateResetLink :: UserId -> Maybe Text.Text -> Clck ProfileDataURL Response
+      generateResetLink uid _ =
+        do p <- plugins <$> get
+           ~(Just (AcidStateAuthenticate authenticateState passwordState)) <- getPluginState p "authenticate"
+           ~(Just authShowURL) <- getPluginRouteFn p "authenticate"
+           cc <- getConfig p
+           let basePath = maybe "_state" (\top -> top </> "_state") (clckTopDir cc)
+               baseUri = case calcTLSBaseURI cc of
+                 Nothing  -> calcBaseURI cc
+                 (Just b) -> b
+
+               resetLink = authShowURL ResetPassword [] <> "/#"
+           eResetTokenLink <- liftIO $ resetTokenForUserId resetLink authenticateState passwordState uid
+           case eResetTokenLink of
+             (Left e) -> template "Reset Password Link" () $
+                [hsx|
+                 <div>
+                  <h2>Reset Password Link Error</h2>
+                  <% show e %>
+                 </div>
+                |]
+             (Right lnk) ->
+               template "Reset Password Link" () $
+                [hsx|
+                 <div>
+                  <h2>Reset Password Link</h2>
+                  <p>Share this link with the user</p>
+                  <% lnk %>
+                 </div>
+                |]
+
+generateResetLinkFormlet :: ClckForm ProfileDataURL (Maybe Text.Text)
+generateResetLinkFormlet =
+  do (fieldset $
+      (divControlGroup $ divControls $ inputSubmit "Generate Change Password Link"  `setAttrs` [("class" := "btn") :: Attr Text Text]))
+   where
+     divControlGroup = mapView (\xml -> [[hsx|<div class="control-group"><% xml %></div>|]])
+     divControls     = mapView (\xml -> [[hsx|<div class="controls"><% xml %></div>|]])
+
 
 passwordForFormlet :: UserId -> ClckForm ProfileDataURL ()
 passwordForFormlet userid =
diff --git a/clckwrks.cabal b/clckwrks.cabal
--- a/clckwrks.cabal
+++ b/clckwrks.cabal
@@ -1,5 +1,5 @@
 Name:                clckwrks
-Version:             0.27.1
+Version:             0.27.2
 Synopsis:            A secure, reliable content management system (CMS) and blogging platform
 Description:         clckwrks (pronounced, clockworks) aims to compete
                      directly with popular PHP-based blogging and CMS
@@ -107,7 +107,7 @@
      containers                   >= 0.4  && < 0.7,
      directory                    >= 1.1  && < 1.4,
      filepath                     >= 1.2  && < 1.5,
-     happstack-authenticate       >= 2.4.2  && < 2.5,
+     happstack-authenticate       >= 2.5.1  && < 2.6,
      happstack-hsp                == 7.3.*,
      happstack-jmacro             >= 7.0  && < 7.1,
      happstack-server             >= 7.0  && < 7.8,
