Skip to content

Instantly share code, notes, and snippets.

@xonv
Last active January 23, 2016 02:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save xonv/8542cd2dae096f3c32ab to your computer and use it in GitHub Desktop.
Save xonv/8542cd2dae096f3c32ab to your computer and use it in GitHub Desktop.
Imports Microsoft.VisualBasic
Imports AspNetSecurity = System.Web.Security
' DotNetNuke User Api Functions
' Created by XONV
' Refer: http://blog.dicay.net/bai-viet/dotnetnuke-user-api-webservice-thao-tac-voi-user-thong-qua-api/
Public Class DnnUserApi
''' <summary>
''' Create DotNetNuke User
''' </summary>
''' <param name="portalId"></param>
''' <param name="userName"></param>
''' <param name="pwd"></param>
''' <param name="email"></param>
''' <returns></returns>
''' <remarks></remarks>
Public Function CreateUser(portalId As Integer, userName As String, pwd As String, email As String) As DotNetNuke.Security.Membership.UserCreateStatus
Dim objInfo As New UserInfo
With objInfo
.PortalID = portalId
.Username = userName
.DisplayName = userName
.Membership.Password = pwd
.Email = email
End With
Return UserController.CreateUser(objInfo)
End Function
''' <summary>
''' Get UserInfo
''' </summary>
''' <param name="portalId"></param>
''' <param name="userName"></param>
''' <returns></returns>
''' <remarks></remarks>
Public Function GetUserInfo(portalId As Integer, userName As String) As UserInfo
Dim objUserInfo As UserInfo
objUserInfo = UserController.GetUserByName(portalId, userName)
Return objUserInfo
End Function
''' <summary>
''' Change DotNetNuke User Password
''' </summary>
''' <param name="userName"></param>
''' <param name="oldPassword"></param>
''' <param name="newPassword"></param>
''' <returns></returns>
''' <remarks></remarks>
Public Function ChangePassword(userName As String, oldPassword As String, newPassword As String) As Boolean
Dim result As Boolean
Try
Dim user = GetMembershipUser(userName)
'Force unlock user
If (user.IsLockedOut) Then
user.UnlockUser()
End If
result = user.ChangePassword(oldPassword, newPassword)
Catch ex As Exception
result = False
End Try
Return result
End Function
''' <summary>
''' Reset DotNetNuke User Password
''' </summary>
''' <param name="userName"></param>
''' <param name="newPwd"></param>
''' <returns></returns>
''' <remarks></remarks>
Public Function ResetPassword(userName As String, newPwd As String) As Boolean
Dim result As Boolean
Try
Dim user = GetMembershipUser(userName)
If (user.IsLockedOut) Then
user.UnlockUser()
End If
Dim oldPassword = user.GetPassword()
result = user.ChangePassword(oldPassword, newPwd)
Catch ex As Exception
result = False
End Try
Return result
End Function
#Region "Private Functions"
'Please reference : Library\Providers\MembershipProviders\AspNetMembershipProvider\AspNetMembershipProvider.vb
''' <summary>
'''
''' </summary>
''' <param name="userName"></param>
''' <returns></returns>
''' <remarks></remarks>
Private Function GetMembershipUser(userName As String) As MembershipUser
Dim cacheKey As String = String.Format("MembershipUser_{0}", userName.ToString())
Return CBO.GetCachedObject(Of MembershipUser)(New CacheItemArgs(cacheKey, _
DataCache.UserCacheTimeOut, _
DataCache.UserCachePriority, _
userName), _
AddressOf GetMembershipUserCallBack)
End Function
Private Shared Function GetMembershipUserCallBack(cacheItemArgs As CacheItemArgs) As Object
Dim userName = DirectCast(cacheItemArgs.ParamList(0), String)
Return Membership.GetUser(userName)
End Function
#End Region
End Class
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment