Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Using System
- Using System.Text
- Using System.Security.Cryptography
- DclNamespace ASNA.Helpers.App
- BegClass User Access(*Public)
- DclDB DGDB DBName("*Public/DG Net Local")
- DclDiskFile DGUser +
- Type(*Update) +
- Org(*Indexed) +
- AddRec(*Yes) +
- Prefix(User_) +
- File("Devo/DGUser") +
- DB(DGDB) +
- ImpOpen( *No )
- BegEnum ErrorStatus Access(*Public)
- DclEnumFld Success Value(1)
- DclEnumFld UserNameAlreadyExists Value(2)
- DclEnumFld UserNotFound Value(3)
- DclEnumFld PasswordInvalid Value(4)
- DclEnumFld UserStatusNotValid Value(5)
- DclEnumFld PasswordDoesNotMatch Value(6)
- DclEnumFld UserAccountIsDisabled Value(7)
- EndEnum
- BegEnum Status Access(*Public)
- DclEnumFld Active Value(1)
- DclEnumFld Inactive Value(2)
- DclEnumFld Disabled Value(3)
- EndEnum
- BegSr OpenDB
- Connect DGDB
- Open DGUser
- EndSr
- BegSr CloseDB
- Close *All
- Disconnect DGDB
- EndSr
- BegFunc CreateUser Access(*Public) Type(*Integer4)
- DclSrParm UserName Like(User_UserName)
- DclSrParm FullName Like(User_FullName)
- DclSrParm Email Like(User_Email)
- DclSrParm Password Type(*String)
- OpenDB()
- Chain DGUser Key(UserName)
- If (DGUser.IsFound)
- CloseDB()
- LeaveSr ErrorStatus.UserNameAlreadyExists
- EndIf
- If (NOT ValidatePassword(Password))
- CloseDB()
- LeaveSr ErrorStatus.PasswordInvalid
- EndIf
- User_UserName = UserName
- User_FullName = FullName
- User_Email = Email
- User_Status = Status.Active
- User_Salt = Guid.NewGuid().ToString()
- User_Password = GetHashedString(Password + User_Salt)
- Write DGUser
- CloseDB()
- LeaveSr ErrorStatus.Success
- EndFunc
- BegFunc ChangeUserEmail Access(*Public) Type(*Integer4)
- DclSrParm UserName Like(User_UserName)
- DclSrParm Email Like(User_Email)
- OpenDB()
- Chain DGUser Key(UserName)
- If (NOT DGUser.IsFound)
- CloseDB()
- LeaveSr ErrorStatus.UserNotFound
- EndIf
- User_Email = Email
- Update DGUser
- CloseDB()
- LeaveSr ErrorStatus.Success
- EndFunc
- BegFunc ChangeUserStatus Access(*Public) Type(*Integer4)
- DclSrParm UserName Like(User_UserName)
- DclSrParm UserStatus Type(*Integer4)
- OpenDB()
- Chain DGUser Key(UserName)
- If (NOT DGUser.IsFound)
- CloseDB()
- LeaveSr ErrorStatus.UserNotFound
- EndIf
- // Validate UserStatus here. If a literal is passed instead of
- // an enumeration field its possible to get an invalid UserStatus
- // value.
- If NOT ConfirmUserStatus(UserStatus)
- CloseDB()
- LeaveSr ErrorStatus.UserStatusNotValid
- EndIf
- User_Status = UserStatus
- Update DGUser
- CloseDB()
- LeaveSr ErrorStatus.Success
- EndFunc
- BegFunc ChangeUserPassword Access(*Public) Type(*Integer4)
- DclSrParm UserName Like(User_UserName)
- DclSrParm Password Type(*String)
- OpenDB()
- Chain DGUser Key(UserName)
- If (NOT DGUser.IsFound)
- CloseDB()
- LeaveSr ErrorStatus.UserNotFound
- EndIf
- If (NOT ValidatePassword(Password))
- CloseDB()
- LeaveSr ErrorStatus.PasswordInvalid
- EndIf
- User_Salt = Guid.NewGuid().ToString()
- User_Password = GetHashedString(Password + User_Salt)
- Update DGUser
- CloseDB()
- LeaveSr ErrorStatus.Success
- EndFunc
- BegFunc ConfirmUserCredentials Access(*Public) Type(*Integer4)
- DclSrParm UserName Type(*String)
- DclSrParm UserPassword Type(*String)
- DclFld HashedSubmittedPassword Type(*String)
- DclFld Result Type(*Boolean)
- OpenDB()
- Chain DGUser Key(UserName)
- If (NOT DGUser.IsFound)
- CloseDB()
- LeaveSr ErrorStatus.UserNotFound
- EndIf
- CloseDB()
- If User_Status = ErrorStatus.UserAccountIsDisabled
- LeaveSr ErrorStatus.UserAccountIsDisabled
- EndIf
- HashedSubmittedPassword = GetHashedString(UserPassword + User_Salt)
- Result = GetHashedString(UserPassword + User_Salt) = User_Password
- If Result
- LeaveSr ErrorStatus.Success
- Else
- LeaveSr ErrorStatus.PasswordDoesNotMatch
- EndIf
- EndFunc
- BegFunc GetHashedString Type(*String) Shared(*Yes) Access(*Public)
- DclSrParm InputString Type(*String)
- DclFld Sha512 Type(SHA512CryptoServiceProvider) New()
- DclFld Encoding Type(AsciiEncoding) New()
- DclFld HashedString Type(*String)
- DclArray Bytes Type(*Byte) Rank(1)
- // Compute hash as array of bytes.
- Bytes = Sha512.ComputeHash(Encoding.GetBytes(InputString) )
- // Get Base64 value of the hash.
- HashedString = System.Convert.ToBase64String(Bytes)
- LeaveSr HashedString
- EndFunc
- BegFunc ValidatePassword Type(*Boolean)
- DclSrParm Password Type(*String)
- If Password.Length > 128
- LeaveSr *False
- EndIf
- LeaveSr *True
- EndFunc
- BegFunc ConfirmUserStatus Type(*Boolean)
- DclSrParm UserStatus Type(*Integer4)
- ForEach StatusValue Type(Status) Collection(Enum.GetValues(*TypeOf(Status)))
- If UserStatus = StatusValue
- LeaveSr *True
- EndIf
- EndFor
- LeaveSr *False
- EndFunc
- EndClass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement