Example #1
0
        private bool TestForExistingOrganization(Models.OrganizationRequest value)
        {
            try
            {
                //SQL Statement
                var sqlString = "SELECT COUNT(*) FROM organizations WHERE name = @name";

                using (var connection = new NpgsqlConnection(connectionString))
                {
                    connection.Open();

                    using (var command = new NpgsqlCommand(sqlString, connection))
                    {
                        command.Parameters.AddWithValue("@name", NpgsqlTypes.NpgsqlDbType.Text, value.OrganizationName);
                        command.Prepare();
                        var count = Convert.ToInt64(command.ExecuteScalar());
                        if (count >= 1)
                        {
                            return(true);
                        }
                        else
                        {
                            return(false);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                //Log Exception
                _logger.LogError(ex, "organization name verification failed");
                return(false);
            }
        }
Example #2
0
        public ActionResult Post([FromBody] Models.OrganizationRequest value)
        {
            var result = organizationService.Initialize(value);

            if (result == null)
            {
                return(NotFound());
            }
            else
            {
                return(Ok(result));
            }
        }
        private long CreateUser(Models.OrganizationRequest value, long organization, out long securityTokenOut)
        {
            try
            {
                //SQL Statement
                var sqlString = "INSERT INTO users (id, first_name, description, organization, email_address, password, security_token, role, agreed_to_terms_and_policies, enabled, last_name) " +
                                "VALUES (@id, @first_name, @description, @organization, @email_address, @password, @security_token, @role, @agreed_to_terms_and_policies, @enabled, @last_name)";

                //Create UNIX Timestamp
                var utcDateTime  = DateTime.UtcNow;
                var dto          = new DateTimeOffset(utcDateTime);
                var unixDateTime = dto.ToUnixTimeMilliseconds();

                var  random        = new Random();
                int  rnd           = random.Next(1000000000, 2000000000);
                long securityToken = unixDateTime - rnd;

                using (var connection = new NpgsqlConnection(connectionString))
                {
                    connection.Open();

                    using (var command = new NpgsqlCommand(sqlString, connection))
                    {
                        command.Parameters.AddWithValue("@id", NpgsqlTypes.NpgsqlDbType.Bigint, unixDateTime);
                        command.Parameters.AddWithValue("@first_name", NpgsqlTypes.NpgsqlDbType.Varchar, value.FirstName);
                        command.Parameters.AddWithValue("@last_name", NpgsqlTypes.NpgsqlDbType.Varchar, value.LastName);
                        command.Parameters.AddWithValue("@description", NpgsqlTypes.NpgsqlDbType.Varchar, value.UserDescription);
                        command.Parameters.AddWithValue("@organization", NpgsqlTypes.NpgsqlDbType.Bigint, organization);
                        command.Parameters.AddWithValue("@email_address", NpgsqlTypes.NpgsqlDbType.Varchar, value.UserEmailAddress);
                        command.Parameters.AddWithValue("@password", NpgsqlTypes.NpgsqlDbType.Varchar, value.UserPassword);
                        command.Parameters.AddWithValue("@security_token", NpgsqlTypes.NpgsqlDbType.Bigint, securityToken);
                        command.Parameters.AddWithValue("@role", NpgsqlTypes.NpgsqlDbType.Bigint, 1);
                        command.Parameters.AddWithValue("@agreed_to_terms_and_policies", NpgsqlTypes.NpgsqlDbType.Bigint, value.AgreeToTermsAndPolicies);
                        command.Parameters.AddWithValue("@enabled", NpgsqlTypes.NpgsqlDbType.Bigint, 1);
                        command.Prepare();
                        command.ExecuteNonQuery();

                        //Log Success
                        securityTokenOut = securityToken;
                        return(unixDateTime);
                    }
                }
            }
            catch (Exception ex)
            {
                //Log Exception
                //_logger.LogError(ex, "user creation failed");
                securityTokenOut = 0;
                return(0);
            }
        }
Example #4
0
        private Guid CreateUser(Models.OrganizationRequest value, Guid organization, Guid userId, out Guid securityTokenOut)
        {
            try
            {
                //SQL Statement
                var sqlString = "INSERT INTO users (id, first_name, last_name, description, email_address, password, security_token, organization, primary_user, role, created, created_by) " +
                                "VALUES (@id, @first_name, @last_name, @description, @email_address, @password, @security_token, @organization, @primary_user, @role, @created, @created_by)";

                //Guid idGuid = Guid.NewGuid();
                Guid securityTokenGuid = Guid.NewGuid();

                using (var connection = new NpgsqlConnection(connectionString))
                {
                    connection.Open();

                    using (var command = new NpgsqlCommand(sqlString, connection))
                    {
                        command.Parameters.AddWithValue("@id", NpgsqlTypes.NpgsqlDbType.Uuid, userId);
                        command.Parameters.AddWithValue("@first_name", NpgsqlTypes.NpgsqlDbType.Text, value.FirstName);
                        command.Parameters.AddWithValue("@last_name", NpgsqlTypes.NpgsqlDbType.Text, value.LastName);
                        command.Parameters.AddWithValue("@description", NpgsqlTypes.NpgsqlDbType.Text, value.UserDescription);
                        command.Parameters.AddWithValue("@email_address", NpgsqlTypes.NpgsqlDbType.Text, value.UserEmailAddress);
                        command.Parameters.AddWithValue("@password", NpgsqlTypes.NpgsqlDbType.Text, value.UserPassword);
                        command.Parameters.AddWithValue("@security_token", NpgsqlTypes.NpgsqlDbType.Uuid, securityTokenGuid);
                        command.Parameters.AddWithValue("@organization", NpgsqlTypes.NpgsqlDbType.Uuid, organization);
                        command.Parameters.AddWithValue("@primary_user", NpgsqlTypes.NpgsqlDbType.Bigint, 1);
                        command.Parameters.AddWithValue("@role", NpgsqlTypes.NpgsqlDbType.Bigint, 1);
                        command.Parameters.AddWithValue("@created", NpgsqlTypes.NpgsqlDbType.TimestampTz, DateTime.UtcNow);
                        command.Parameters.AddWithValue("@created_by", NpgsqlTypes.NpgsqlDbType.Uuid, userId);
                        command.Prepare();
                        command.ExecuteNonQuery();

                        //Log Success
                        securityTokenOut = securityTokenGuid;
                        return(userId);
                    }
                }
            }
            catch (Exception ex)
            {
                //Log Exception
                _logger.LogError(ex, "user creation failed");
                securityTokenOut = errorGuid;

                return(errorGuid);
            }
        }
Example #5
0
        private Guid CreateOrganization(Models.OrganizationRequest value, Guid userId)
        {
            try
            {
                //SQL Statement
                var sqlString = "INSERT INTO organizations (id, name, description, created, created_by) " +
                                "VALUES (@id, @name, @description, @created, @created_by)";

                Guid idGuid = Guid.NewGuid();

                using (var connection = new NpgsqlConnection(connectionString))
                {
                    connection.Open();

                    using (var command = new NpgsqlCommand(sqlString, connection))
                    {
                        command.Parameters.AddWithValue("@id", NpgsqlTypes.NpgsqlDbType.Uuid, idGuid);
                        command.Parameters.AddWithValue("@name", NpgsqlTypes.NpgsqlDbType.Text, value.OrganizationName);
                        command.Parameters.AddWithValue("@description", NpgsqlTypes.NpgsqlDbType.Text, value.OrganizationDescription);
                        command.Parameters.AddWithValue("@created", NpgsqlTypes.NpgsqlDbType.TimestampTz, DateTime.UtcNow);
                        command.Parameters.AddWithValue("@created_by", NpgsqlTypes.NpgsqlDbType.Uuid, userId);
                        command.Prepare();
                        command.ExecuteNonQuery();

                        return(idGuid);
                    }
                }
            }
            catch (Exception ex)
            {
                //Log Exception
                _logger.LogError(ex, "organization creation failed");

                return(errorGuid);
            }
        }
        private long CreateOrganization(Models.OrganizationRequest value)
        {
            try
            {
                //SQL Statement
                var sqlString = "INSERT INTO organizations (id, name, description) " +
                                "VALUES (@id, @name, @description)";

                //Create UNIX Timestamp
                var utcDateTime  = DateTime.UtcNow;
                var dto          = new DateTimeOffset(utcDateTime);
                var unixDateTime = dto.ToUnixTimeMilliseconds();

                using (var connection = new NpgsqlConnection(connectionString))
                {
                    connection.Open();

                    using (var command = new NpgsqlCommand(sqlString, connection))
                    {
                        command.Parameters.AddWithValue("@id", NpgsqlTypes.NpgsqlDbType.Bigint, unixDateTime);
                        command.Parameters.AddWithValue("@name", NpgsqlTypes.NpgsqlDbType.Varchar, value.OrganizationName);
                        command.Parameters.AddWithValue("@description", NpgsqlTypes.NpgsqlDbType.Varchar, value.OrganizationDescription);
                        command.Prepare();
                        command.ExecuteNonQuery();

                        return(unixDateTime);
                    }
                }
            }
            catch (Exception ex)
            {
                //Log Exception
                //_logger.LogError(ex, "organization creation failed");
                return(0);
            }
        }
Example #7
0
        public Models.OrganizationResponse Initialize(Models.OrganizationRequest value)
        {
            Models.OrganizationResponse response = new Models.OrganizationResponse();

            bool existingOrganization;
            Guid organization;
            Guid group;
            Guid user;
            Guid securityToken;
            Guid userIdGuid;

            try
            {
                //Test to see if an Organization of the same name already exists
                if (existingOrganization = TestForExistingOrganization(value))
                {
                    //Log Failure
                    response.Status        = "error";
                    response.Message       = "organization already exists";
                    response.Id            = errorGuid;
                    response.SecurityToken = errorGuid;
                    return(response);
                }
                else
                {
                    //Create a new User Id UUID
                    userIdGuid = Guid.NewGuid();

                    //Create a new Organization
                    if ((organization = CreateOrganization(value, userIdGuid)) != errorGuid)
                    {
                        if ((group = CreateGroup(organization, userIdGuid)) != errorGuid)
                        {
                            //Create a User with Creator Role priveleges within the new Organization
                            if ((user = CreateUser(value, organization, userIdGuid, out securityToken)) != errorGuid)
                            {
                                //Log Success
                                response.Status        = "success";
                                response.Message       = "initialization succeeded";
                                response.Id            = user;
                                response.SecurityToken = securityToken;
                                return(response);
                            }
                            else
                            {
                                //Log Failure
                                response.Status        = "error";
                                response.Message       = "user was not created";
                                response.Id            = errorGuid;
                                response.SecurityToken = errorGuid;
                                return(response);
                            }
                        }
                        else
                        {
                            //Log Failure
                            response.Status        = "error";
                            response.Message       = "group was not created";
                            response.Id            = errorGuid;
                            response.SecurityToken = errorGuid;
                            return(response);
                        }
                    }
                    else
                    {
                        //Log Failure
                        response.Status        = "error";
                        response.Message       = "organization was not created";
                        response.Id            = errorGuid;
                        response.SecurityToken = errorGuid;
                        return(response);
                    }
                }
            }
            catch (Exception ex)
            {
                //Log Exception
                _logger.LogError(ex, "initialization failed");

                response.Status  = "error";
                response.Message = "initialization failed";
                response.Id      = errorGuid;
                return(response);
            }
        }
        public Models.OrganizationResponse Initialize(Models.OrganizationRequest value)
        {
            Models.OrganizationResponse response = new Models.OrganizationResponse();

            bool existingOrganization;
            long organization;
            long thingGroup;
            long user;
            long securityToken = 0;

            try
            {
                //Ensure user agreed to the terms and policies before creating a new Organization
                if (value.AgreeToTermsAndPolicies != 0)
                {
                    //Test to see if an Organization of the same name already exists
                    if (existingOrganization = TestForExistingOrganization(value))
                    {
                        //Log Failure
                        response.Status        = "error";
                        response.Message       = "organization already exists";
                        response.Id            = 0;
                        response.SecurityToken = 0;
                        return(response);
                    }
                    else
                    {
                        //Create a new Organization
                        if ((organization = CreateOrganization(value)) != 0)
                        {
                            if ((thingGroup = CreateThingGroup(organization)) != 0)
                            {
                                //Create a User with Creator Role priveleges within the new Organization
                                if ((user = CreateUser(value, organization, out securityToken)) != 0)
                                {
                                    //Log Success
                                    response.Status        = "success";
                                    response.Message       = "initialization succeeded";
                                    response.Id            = user;
                                    response.SecurityToken = securityToken;
                                    return(response);
                                }
                                else
                                {
                                    //Log Failure
                                    response.Status        = "error";
                                    response.Message       = "user was not created";
                                    response.Id            = 0;
                                    response.SecurityToken = 0;
                                    return(response);
                                }
                            }
                            else
                            {
                                //Log Failure
                                response.Status        = "error";
                                response.Message       = "thing group was not created";
                                response.Id            = 0;
                                response.SecurityToken = 0;
                                return(response);
                            }
                        }
                        else
                        {
                            //Log Failure
                            response.Status        = "error";
                            response.Message       = "organization was not created";
                            response.Id            = 0;
                            response.SecurityToken = 0;
                            return(response);
                        }
                    }
                }
                else
                {
                    //Log Failure
                    response.Status        = "error";
                    response.Message       = "user did not agree to terms and policies";
                    response.Id            = 0;
                    response.SecurityToken = 0;
                    return(response);
                }
            }
            catch (Exception ex)
            {
                //Log Exception
                //_logger.LogError(ex, "initialization failed");

                response.Status  = "error";
                response.Message = "initialization failed";
                response.Id      = 0;
                return(response);
            }
        }