Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [MobileAppController]
- [RoutePrefix("api/register")]
- [AllowAnonymous]
- public class RegisterController : ApiController
- {
- [HttpPost]
- [Route("newuser")]
- public HttpResponseMessage NewUser(RegistrationRequest request)
- {
- try
- {
- //...... code truncated for brevity
- myContext context = new myContext();
- DataObjects.Account account = context.Accounts.Where(a => a.Username == request.username).SingleOrDefault();
- if (account != null)
- {
- return Request.CreateResponse(HttpStatusCode.OK, new
- {
- message = "That username already exists",
- error = true
- });
- }
- else
- {
- byte[] salt = CustomLoginProviderUtils.generateSalt();
- DataObjects.Account newAccount = new DataObjects.Account()
- {
- Id = Guid.NewGuid().ToString(),
- Username = request.username,
- Salt = salt,
- CreatedAt = DateTime.UtcNow,
- SaltedAndHashedPassword = CustomLoginProviderUtils.hash(request.password, salt)
- };
- context.Accounts.Add(newAccount);
- context.SaveChanges();
- return Request.CreateResponse(HttpStatusCode.OK, new
- {
- message = "Account created successfully!",
- error = false,
- account = newAccount
- });
- }
- }catch(Exception ex)
- {
- // Retrieve the error messages as a list of strings.
- //var errorMessages = ex.EntityValidationErrors.SelectMany(x => x.ValidationErrors).Select(x => x.ErrorMessage);
- //// Join the list to a single string.
- //var fullErrorMessage = string.Join(";", errorMessages);
- //// Combine the original exception message with the new one.
- //var exceptionMessage = string.Concat(ex.Message, "The validation errors are:", fullErrorMessage);
- // Throw a new DbEntityValidationException with the improved exception message.
- //throw new DbEntityValidationException(exceptionMessage, ex.EntityValidationErrors);
- return Request.CreateResponse(HttpStatusCode.OK, new
- {
- message = "Failed!",
- error = true
- });
- }
- public override int SaveChanges()
- {
- try
- {
- return base.SaveChanges();
- }catch (DbEntityValidationException ex)
- {
- // Retrieve the error messages as a list of strings.
- var errorMessages = ex.EntityValidationErrors.SelectMany(x => x.ValidationErrors).Select(x => x.ErrorMessage);
- // Join the list to a single string.
- var fullErrorMessage = string.Join(";", errorMessages);
- // Combine the original exception message with the new one.
- var exceptionMessage = string.Concat(ex.Message, "The validation errors are:", fullErrorMessage);
- // Throw a new DbEntityValidationException with the improved exception message.
- throw new DbEntityValidationException(exceptionMessage, ex.EntityValidationErrors);
- }
- }
- **Generate Salt function**
- public static byte[] generateSalt()
- {
- RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
- byte[] salt = new byte[256];
- rng.GetBytes(salt);
- //rng.GetNonZeroBytes(salt);
- return salt;
- }
Add Comment
Please, Sign In to add comment