diff --git a/go.mod b/go.mod index f75880e..10ebc50 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.22 toolchain go1.22.3 require ( - github.com/akrck02/valhalla-core-sdk v0.0.11-20240719200736-dev + github.com/akrck02/valhalla-core-sdk v0.0.12-20240720153807-feature-native-http github.com/golang-jwt/jwt/v5 v5.2.1 github.com/joho/godotenv v1.5.1 go.mongodb.org/mongo-driver v1.15.0 diff --git a/go.sum b/go.sum index 6a08ee4..49eb4d1 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -github.com/akrck02/valhalla-core-sdk v0.0.11-20240719200736-dev h1:hZoHpK0WOa3rEglZpdES+tRFrSyjeAV01kornldXLhY= -github.com/akrck02/valhalla-core-sdk v0.0.11-20240719200736-dev/go.mod h1:qBovw83Vo/iXggXZS4ttcMqF9xFSR5ogu7G+RWh/jGg= +github.com/akrck02/valhalla-core-sdk v0.0.12-20240720153807-feature-native-http h1:rBZorfoXI9iwUrASfNnOOulM0qUWQopSFOe2bdkGnoY= +github.com/akrck02/valhalla-core-sdk v0.0.12-20240720153807-feature-native-http/go.mod h1:qBovw83Vo/iXggXZS4ttcMqF9xFSR5ogu7G+RWh/jGg= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk= diff --git a/services/device/device.go b/services/device/device.go index 51e6ae9..74755a2 100644 --- a/services/device/device.go +++ b/services/device/device.go @@ -5,8 +5,8 @@ import ( "github.com/akrck02/valhalla-core-dal/database" "github.com/akrck02/valhalla-core-sdk/http" "github.com/akrck02/valhalla-core-sdk/log" + apimodels "github.com/akrck02/valhalla-core-sdk/models/api" devicemodels "github.com/akrck02/valhalla-core-sdk/models/device" - systemmodels "github.com/akrck02/valhalla-core-sdk/models/system" usersmodels "github.com/akrck02/valhalla-core-sdk/models/users" "github.com/akrck02/valhalla-core-sdk/utils" "github.com/akrck02/valhalla-core-sdk/valerror" @@ -15,11 +15,11 @@ import ( "go.mongodb.org/mongo-driver/mongo" ) -func AddUserDevice(conn *mongo.Client, user *usersmodels.User, device *devicemodels.Device) (*devicemodels.Device, *systemmodels.Error) { +func AddUserDevice(conn *mongo.Client, user *usersmodels.User, device *devicemodels.Device) (*devicemodels.Device, *apimodels.Error) { token, err := utils.GenerateAuthToken(user, device, configuration.Params.Secret) if err != nil { - return nil, &systemmodels.Error{ + return nil, &apimodels.Error{ Status: http.HTTP_STATUS_INTERNAL_SERVER_ERROR, Error: valerror.DATABASE_ERROR, Message: "Error generating token", @@ -45,7 +45,7 @@ func AddUserDevice(conn *mongo.Client, user *usersmodels.User, device *devicemod log.Debug("Creating new device...") _, insertErr := coll.InsertOne(database.GetDefaultContext(), device) if insertErr != nil { - return device, &systemmodels.Error{ + return device, &apimodels.Error{ Status: http.HTTP_STATUS_INTERNAL_SERVER_ERROR, Error: valerror.DATABASE_ERROR, Message: "Error creating device", @@ -55,7 +55,7 @@ func AddUserDevice(conn *mongo.Client, user *usersmodels.User, device *devicemod return device, nil } -func FindDevice(coll *mongo.Collection, device *devicemodels.Device) (*devicemodels.Device, *systemmodels.Error) { +func FindDevice(coll *mongo.Collection, device *devicemodels.Device) (*devicemodels.Device, *apimodels.Error) { var found devicemodels.Device err := coll.FindOne( @@ -64,7 +64,7 @@ func FindDevice(coll *mongo.Collection, device *devicemodels.Device) (*devicemod ).Decode(&found) if err != nil { - return nil, &systemmodels.Error{ + return nil, &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.DEVICE_DOES_NOT_EXIST, Message: "Device doesn't exists", @@ -74,7 +74,7 @@ func FindDevice(coll *mongo.Collection, device *devicemodels.Device) (*devicemod return &found, nil } -func FindDeviceByAuthToken(coll *mongo.Collection, device *devicemodels.Device) (*devicemodels.Device, *systemmodels.Error) { +func FindDeviceByAuthToken(coll *mongo.Collection, device *devicemodels.Device) (*devicemodels.Device, *apimodels.Error) { var found devicemodels.Device err := coll.FindOne( @@ -83,7 +83,7 @@ func FindDeviceByAuthToken(coll *mongo.Collection, device *devicemodels.Device) ).Decode(&found) if err != nil { - return nil, &systemmodels.Error{ + return nil, &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.DEVICE_DOES_NOT_EXIST, Message: "Device doesn't exists", @@ -94,7 +94,7 @@ func FindDeviceByAuthToken(coll *mongo.Collection, device *devicemodels.Device) } -func DeleteDevice(conn *mongo.Client, device *devicemodels.Device) *systemmodels.Error { +func DeleteDevice(conn *mongo.Client, device *devicemodels.Device) *apimodels.Error { //check if device exists existsErr := DeviceExists(conn, device) @@ -107,7 +107,7 @@ func DeleteDevice(conn *mongo.Client, device *devicemodels.Device) *systemmodels _, err := coll.DeleteOne(database.GetDefaultContext(), bson.M{"user": device.User, "address": device.Address, "useragent": device.UserAgent}) if err != nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_INTERNAL_SERVER_ERROR, Error: valerror.DATABASE_ERROR, Message: "Error deleting device", @@ -117,14 +117,14 @@ func DeleteDevice(conn *mongo.Client, device *devicemodels.Device) *systemmodels return nil } -func DeviceExists(conn *mongo.Client, device *devicemodels.Device) *systemmodels.Error { +func DeviceExists(conn *mongo.Client, device *devicemodels.Device) *apimodels.Error { // check if device exists coll := conn.Database(database.CurrentDatabase).Collection(database.DEVICE) obtained, err := FindDevice(coll, device) if err != nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.DEVICE_DOES_NOT_EXIST, Message: "Device doesn't exist", @@ -132,7 +132,7 @@ func DeviceExists(conn *mongo.Client, device *devicemodels.Device) *systemmodels } if obtained == nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.DEVICE_DOES_NOT_EXIST, Message: "Device doesn't exist", diff --git a/services/notification.go b/services/notification.go index 55b217d..3b1a601 100644 --- a/services/notification.go +++ b/services/notification.go @@ -2,7 +2,7 @@ package services import ( "github.com/akrck02/valhalla-core-sdk/http" - systemmodels "github.com/akrck02/valhalla-core-sdk/models/system" + apimodels "github.com/akrck02/valhalla-core-sdk/models/api" teammodels "github.com/akrck02/valhalla-core-sdk/models/team" ) @@ -11,9 +11,9 @@ type Alert struct { Message string } -func AlertTeam(team teammodels.Team) systemmodels.Error { +func AlertTeam(team teammodels.Team) *apimodels.Error { - return systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_OK, Message: "Ok.", } diff --git a/services/project/project.go b/services/project/project.go index eb378ca..5141f8c 100644 --- a/services/project/project.go +++ b/services/project/project.go @@ -4,8 +4,8 @@ import ( "github.com/akrck02/valhalla-core-dal/database" userdal "github.com/akrck02/valhalla-core-dal/services/user" "github.com/akrck02/valhalla-core-sdk/http" + apimodels "github.com/akrck02/valhalla-core-sdk/models/api" projectmodels "github.com/akrck02/valhalla-core-sdk/models/project" - systemmodels "github.com/akrck02/valhalla-core-sdk/models/system" usersmodels "github.com/akrck02/valhalla-core-sdk/models/users" "github.com/akrck02/valhalla-core-sdk/utils" "github.com/akrck02/valhalla-core-sdk/valerror" @@ -14,11 +14,11 @@ import ( "go.mongodb.org/mongo-driver/mongo" ) -func CreateProject(conn *mongo.Client, project *projectmodels.Project) *systemmodels.Error { +func CreateProject(conn *mongo.Client, project *projectmodels.Project) *apimodels.Error { // if the project name is empty, return an error if utils.IsEmpty(project.Name) { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.EMPTY_PROJECT_NAME, Message: "Project name cannot be empty", @@ -27,7 +27,7 @@ func CreateProject(conn *mongo.Client, project *projectmodels.Project) *systemmo // if the project description is empty, return an error if utils.IsEmpty(project.Description) { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.EMPTY_PROJECT_DESCRIPTION, Message: "Project description cannot be empty", @@ -36,7 +36,7 @@ func CreateProject(conn *mongo.Client, project *projectmodels.Project) *systemmo // if the project owner is empty, return an error if utils.IsEmpty(project.Owner) { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.EMPTY_PROJECT_OWNER, Message: "Owner cannot be empty", @@ -52,7 +52,7 @@ func CreateProject(conn *mongo.Client, project *projectmodels.Project) *systemmo // convert the owner ID to an object ID _, parsingError := utils.StringToObjectId(owner.ID) if parsingError != nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.INVALID_OBJECT_ID, Message: "Invalid ID", @@ -65,7 +65,7 @@ func CreateProject(conn *mongo.Client, project *projectmodels.Project) *systemmo found := projectNameExists(coll, project.Name, owner.ID) if found { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_CONFLICT, Error: valerror.PROJECT_ALREADY_EXISTS, Message: "Project already exists", @@ -79,7 +79,7 @@ func CreateProject(conn *mongo.Client, project *projectmodels.Project) *systemmo insertResult, insertError := coll.InsertOne(database.GetDefaultContext(), project) if insertError != nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_INTERNAL_SERVER_ERROR, Error: valerror.UNEXPECTED_ERROR, Message: insertError.Error(), @@ -87,7 +87,7 @@ func CreateProject(conn *mongo.Client, project *projectmodels.Project) *systemmo } if insertResult.InsertedID == nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_INTERNAL_SERVER_ERROR, Error: valerror.UNEXPECTED_ERROR, Message: "Project not created", @@ -97,14 +97,14 @@ func CreateProject(conn *mongo.Client, project *projectmodels.Project) *systemmo return nil } -func EditProject(conn *mongo.Client, project *projectmodels.Project) *systemmodels.Error { +func EditProject(conn *mongo.Client, project *projectmodels.Project) *apimodels.Error { // Transform team id to object id // also check if team id is valid objID, err := utils.StringToObjectId(project.ID) if err != nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.INVALID_OBJECT_ID, Message: "Invalid object id", @@ -123,7 +123,7 @@ func EditProject(conn *mongo.Client, project *projectmodels.Project) *systemmode // Check if team was updated if err != nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.UPDATE_ERROR, Message: "Could not update team: " + err.Error(), @@ -133,14 +133,14 @@ func EditProject(conn *mongo.Client, project *projectmodels.Project) *systemmode return nil } -func DeleteProject(conn *mongo.Client, project *projectmodels.Project) *systemmodels.Error { +func DeleteProject(conn *mongo.Client, project *projectmodels.Project) *apimodels.Error { // Connect database var client = database.Connect() defer database.Disconnect(*client) if utils.IsEmpty(project.Name) { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.EMPTY_PROJECT_NAME, Message: "Project name cannot be empty", @@ -150,7 +150,7 @@ func DeleteProject(conn *mongo.Client, project *projectmodels.Project) *systemmo // Check if the project ID is valid id, parsingError := utils.StringToObjectId(project.ID) if parsingError != nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.INVALID_OBJECT_ID, Message: "Invalid ID", @@ -163,7 +163,7 @@ func DeleteProject(conn *mongo.Client, project *projectmodels.Project) *systemmo // If an error occurs, return the error if err != nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_INTERNAL_SERVER_ERROR, Error: valerror.PROJECT_NOT_DELETED, Message: "Project not deleted", @@ -172,7 +172,7 @@ func DeleteProject(conn *mongo.Client, project *projectmodels.Project) *systemmo // If the project is not found, return an error if deleteResult.DeletedCount == 0 { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_NOT_FOUND, Error: valerror.PROJECT_NOT_FOUND, Message: "Project not found", @@ -182,7 +182,7 @@ func DeleteProject(conn *mongo.Client, project *projectmodels.Project) *systemmo return nil } -func GetProject(conn *mongo.Client, project *projectmodels.Project) (*projectmodels.Project, *systemmodels.Error) { +func GetProject(conn *mongo.Client, project *projectmodels.Project) (*projectmodels.Project, *apimodels.Error) { // Connect database var client = database.Connect() @@ -191,7 +191,7 @@ func GetProject(conn *mongo.Client, project *projectmodels.Project) (*projectmod // Check if the project ID is valid projectIdObject, parsingError := utils.StringToObjectId(project.ID) if parsingError != nil { - return nil, &systemmodels.Error{ + return nil, &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.INVALID_OBJECT_ID, Message: "Invalid ID", @@ -205,7 +205,7 @@ func GetProject(conn *mongo.Client, project *projectmodels.Project) (*projectmod // If an error occurs, return the error if err != nil { - return nil, &systemmodels.Error{ + return nil, &apimodels.Error{ Status: http.HTTP_STATUS_INTERNAL_SERVER_ERROR, Error: valerror.UNEXPECTED_ERROR, Message: err.Error(), @@ -214,7 +214,7 @@ func GetProject(conn *mongo.Client, project *projectmodels.Project) (*projectmod // If the project is not found, return an error if utils.IsEmpty(found.ID) { - return nil, &systemmodels.Error{ + return nil, &apimodels.Error{ Status: http.HTTP_STATUS_NOT_FOUND, Error: valerror.PROJECT_NOT_FOUND, Message: "Project not found", diff --git a/services/role/role.go b/services/role/role.go index 3766555..dfd32d1 100644 --- a/services/role/role.go +++ b/services/role/role.go @@ -1,26 +1,26 @@ package roledal import ( + apimodels "github.com/akrck02/valhalla-core-sdk/models/api" rolemodels "github.com/akrck02/valhalla-core-sdk/models/role" - systemmodels "github.com/akrck02/valhalla-core-sdk/models/system" ) -func CreateRole(user rolemodels.Role) *systemmodels.Error { +func CreateRole(user rolemodels.Role) *apimodels.Error { return nil } -func DeleteRole(user rolemodels.Role) *systemmodels.Error { +func DeleteRole(user rolemodels.Role) *apimodels.Error { return nil } -func UpdateRole(user rolemodels.Role) *systemmodels.Error { +func UpdateRole(user rolemodels.Role) *apimodels.Error { return nil } -func GetRole(user rolemodels.Role) *systemmodels.Error { +func GetRole(user rolemodels.Role) *apimodels.Error { return nil } diff --git a/services/team/team.go b/services/team/team.go index d30bdf6..696bc96 100644 --- a/services/team/team.go +++ b/services/team/team.go @@ -3,7 +3,7 @@ package teamdal import ( "github.com/akrck02/valhalla-core-dal/database" "github.com/akrck02/valhalla-core-sdk/http" - systemmodels "github.com/akrck02/valhalla-core-sdk/models/system" + apimodels "github.com/akrck02/valhalla-core-sdk/models/api" teammodels "github.com/akrck02/valhalla-core-sdk/models/team" usersmodels "github.com/akrck02/valhalla-core-sdk/models/users" "github.com/akrck02/valhalla-core-sdk/utils" @@ -19,11 +19,11 @@ type MemberChangeRequest struct { User string `json:"userid"` } -func CreateTeam(conn *mongo.Client, team *teammodels.Team) *systemmodels.Error { +func CreateTeam(conn *mongo.Client, team *teammodels.Team) *apimodels.Error { // Check if team name is empty if utils.IsEmpty(team.Name) { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.EMPTY_TEAM_NAME, Message: "Team cannot be nameless", @@ -34,7 +34,7 @@ func CreateTeam(conn *mongo.Client, team *teammodels.Team) *systemmodels.Error { checkedName := utils.ValidateName(team.Name) if checkedName.Response != http.HTTP_STATUS_OK { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: checkedName.Response, Message: checkedName.Message, @@ -43,7 +43,7 @@ func CreateTeam(conn *mongo.Client, team *teammodels.Team) *systemmodels.Error { // Check if team description is empty if utils.IsEmpty(team.Description) { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.EMPTY_TEAM_DESCRIPTION, Message: "Team cannot be descriptionless", @@ -54,7 +54,7 @@ func CreateTeam(conn *mongo.Client, team *teammodels.Team) *systemmodels.Error { checkedDescription := utils.ValidateDescription(team.Description) if checkedDescription.Response != http.HTTP_STATUS_OK { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: checkedDescription.Response, Message: checkedDescription.Message, @@ -70,7 +70,7 @@ func CreateTeam(conn *mongo.Client, team *teammodels.Team) *systemmodels.Error { // Check if team owner is empty if utils.IsEmpty(team.Owner) { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.NO_OWNER, Message: "Team requires an owner", @@ -82,7 +82,7 @@ func CreateTeam(conn *mongo.Client, team *teammodels.Team) *systemmodels.Error { found := teamExists(coll, team) if found.Name != "" { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_INTERNAL_SERVER_ERROR, Error: valerror.TEAM_ALREADY_EXISTS, Message: "Team already exists with name " + team.Name, @@ -98,7 +98,7 @@ func CreateTeam(conn *mongo.Client, team *teammodels.Team) *systemmodels.Error { res, err2 := coll.InsertOne(database.GetDefaultContext(), team) if err2 != nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_INTERNAL_SERVER_ERROR, Error: valerror.TEAM_ALREADY_EXISTS, Message: "Team already exists", @@ -109,14 +109,14 @@ func CreateTeam(conn *mongo.Client, team *teammodels.Team) *systemmodels.Error { return nil } -func DeleteTeam(conn *mongo.Client, team *teammodels.Team) *systemmodels.Error { +func DeleteTeam(conn *mongo.Client, team *teammodels.Team) *apimodels.Error { // Transform team id to object id // also check if team id is valid objID, err := utils.StringToObjectId(team.ID) if err != nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.INVALID_OBJECT_ID, Message: "Invalid object id", @@ -129,7 +129,7 @@ func DeleteTeam(conn *mongo.Client, team *teammodels.Team) *systemmodels.Error { // Check if team was deleted if err != nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_INTERNAL_SERVER_ERROR, Error: valerror.TEAM_NOT_FOUND, Message: "Team not found", @@ -139,14 +139,14 @@ func DeleteTeam(conn *mongo.Client, team *teammodels.Team) *systemmodels.Error { return nil } -func EditTeam(conn *mongo.Client, team *teammodels.Team) *systemmodels.Error { +func EditTeam(conn *mongo.Client, team *teammodels.Team) *apimodels.Error { // Transform team id to object id // also check if team id is valid objID, err := utils.StringToObjectId(team.ID) if err != nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.INVALID_OBJECT_ID, Message: "Invalid object id", @@ -168,7 +168,7 @@ func EditTeam(conn *mongo.Client, team *teammodels.Team) *systemmodels.Error { // Check if team was updated if err != nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.UPDATE_ERROR, Message: "Could not update team: " + err.Error(), @@ -178,11 +178,11 @@ func EditTeam(conn *mongo.Client, team *teammodels.Team) *systemmodels.Error { return nil } -func EditTeamOwner(conn *mongo.Client, team *teammodels.Team) *systemmodels.Error { +func EditTeamOwner(conn *mongo.Client, team *teammodels.Team) *apimodels.Error { // Check if team owner is empty if utils.IsEmpty(team.Owner) { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.NO_OWNER, Message: "Team requires an owner", @@ -194,7 +194,7 @@ func EditTeamOwner(conn *mongo.Client, team *teammodels.Team) *systemmodels.Erro objID, err1 := utils.StringToObjectId(team.ID) if err1 != nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.INVALID_OBJECT_ID, Message: "Invalid object id", @@ -224,7 +224,7 @@ func EditTeamOwner(conn *mongo.Client, team *teammodels.Team) *systemmodels.Erro err3 := result.Err() if err3 != nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.UPDATE_ERROR, Message: "Could not change owner", @@ -234,11 +234,11 @@ func EditTeamOwner(conn *mongo.Client, team *teammodels.Team) *systemmodels.Erro return nil } -func AddMember(conn *mongo.Client, member *MemberChangeRequest) *systemmodels.Error { +func AddMember(conn *mongo.Client, member *MemberChangeRequest) *apimodels.Error { // Check if member is empty if utils.IsEmpty(member.User) { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.MEMBER_PARAMETER_EMPTY, Message: "Adding a member requires a member", @@ -247,7 +247,7 @@ func AddMember(conn *mongo.Client, member *MemberChangeRequest) *systemmodels.Er // Check if team is empty if utils.IsEmpty(member.Team) { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.TEAM_PARAMETER_EMPTY, Message: "Adding a member requires a team", @@ -266,7 +266,7 @@ func AddMember(conn *mongo.Client, member *MemberChangeRequest) *systemmodels.Er objID, parseErr := utils.StringToObjectId(member.Team) if parseErr != nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.INVALID_OBJECT_ID, Message: "Invalid object id", @@ -277,7 +277,7 @@ func AddMember(conn *mongo.Client, member *MemberChangeRequest) *systemmodels.Er coll := conn.Database(database.CurrentDatabase).Collection(database.TEAM) if isUserMemberOrOwner(conn, member) { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.USER_ALREADY_MEMBER, Message: "User is already a member of the team", @@ -288,7 +288,7 @@ func AddMember(conn *mongo.Client, member *MemberChangeRequest) *systemmodels.Er result, parseErr := coll.UpdateByID(database.GetDefaultContext(), objID, bson.M{"$push": bson.M{"members": member.User}}) if parseErr != nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.UPDATE_ERROR, Message: "Could not add member", @@ -297,7 +297,7 @@ func AddMember(conn *mongo.Client, member *MemberChangeRequest) *systemmodels.Er // Check if member was added if result.MatchedCount == 0 { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_NO_CHANGE, Error: valerror.TEAM_NOT_FOUND, Message: "Team member not added", @@ -307,11 +307,11 @@ func AddMember(conn *mongo.Client, member *MemberChangeRequest) *systemmodels.Er return nil } -func RemoveMember(conn *mongo.Client, member *MemberChangeRequest) *systemmodels.Error { +func RemoveMember(conn *mongo.Client, member *MemberChangeRequest) *apimodels.Error { // Check if member is empty if utils.IsEmpty(member.User) { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.MEMBER_PARAMETER_EMPTY, Message: "Adding a member requires a member", @@ -320,7 +320,7 @@ func RemoveMember(conn *mongo.Client, member *MemberChangeRequest) *systemmodels // Check if team is empty if utils.IsEmpty(member.Team) { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.TEAM_PARAMETER_EMPTY, Message: "Adding a member requires a team", @@ -332,7 +332,7 @@ func RemoveMember(conn *mongo.Client, member *MemberChangeRequest) *systemmodels objID, parseErr := utils.StringToObjectId(member.Team) if parseErr != nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.INVALID_OBJECT_ID, Message: "Invalid object id", @@ -348,7 +348,7 @@ func RemoveMember(conn *mongo.Client, member *MemberChangeRequest) *systemmodels // deleting team owner is not allowed if isOwner(conn, member) { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.CANNOT_DELETE_TEAM_OWNER, Message: "User is owner of the team", @@ -357,7 +357,7 @@ func RemoveMember(conn *mongo.Client, member *MemberChangeRequest) *systemmodels // Check if member is in team if !isMember(conn, member) { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.USER_NOT_MEMBER_OF_THE_TEAM, Message: "User is not a member of the team", @@ -367,7 +367,7 @@ func RemoveMember(conn *mongo.Client, member *MemberChangeRequest) *systemmodels // Remove member from team result, parseErr := conn.Database(database.CurrentDatabase).Collection(database.TEAM).UpdateByID(database.GetDefaultContext(), objID, bson.M{"$pull": bson.M{"members": member.User}}) if parseErr != nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.UPDATE_ERROR, Message: "Could not remove member", @@ -376,7 +376,7 @@ func RemoveMember(conn *mongo.Client, member *MemberChangeRequest) *systemmodels // Check if member was removed if result.MatchedCount == 0 { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_NO_CHANGE, Error: valerror.TEAM_NOT_FOUND, Message: "Team member not removed", @@ -386,14 +386,14 @@ func RemoveMember(conn *mongo.Client, member *MemberChangeRequest) *systemmodels return nil } -func GetTeams(conn *mongo.Client, user *usersmodels.User) ([]*teammodels.Team, *systemmodels.Error) { +func GetTeams(conn *mongo.Client, user *usersmodels.User) ([]*teammodels.Team, *apimodels.Error) { // Get the teams that the user owns coll := conn.Database(database.CurrentDatabase).Collection(database.TEAM) teamsCursor, err := coll.Find(database.GetDefaultContext(), bson.M{"owner": user.ID}) if err != nil { - return nil, &systemmodels.Error{ + return nil, &apimodels.Error{ Status: http.HTTP_STATUS_INTERNAL_SERVER_ERROR, Error: valerror.UNEXPECTED_ERROR, Message: "Cannot find teams", @@ -406,7 +406,7 @@ func GetTeams(conn *mongo.Client, user *usersmodels.User) ([]*teammodels.Team, * var team teammodels.Team err := teamsCursor.Decode(&team) if err != nil { - return nil, &systemmodels.Error{ + return nil, &apimodels.Error{ Status: http.HTTP_STATUS_INTERNAL_SERVER_ERROR, Error: valerror.UNEXPECTED_ERROR, Message: "Cannot find teams", @@ -420,12 +420,12 @@ func GetTeams(conn *mongo.Client, user *usersmodels.User) ([]*teammodels.Team, * return teams, nil } -func GetTeam(conn *mongo.Client, team *teammodels.Team) (*teammodels.Team, *systemmodels.Error) { +func GetTeam(conn *mongo.Client, team *teammodels.Team) (*teammodels.Team, *apimodels.Error) { objID, err1 := utils.StringToObjectId(team.ID) if err1 != nil { - return nil, &systemmodels.Error{ + return nil, &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.INVALID_OBJECT_ID, Message: "Invalid object id", @@ -438,7 +438,7 @@ func GetTeam(conn *mongo.Client, team *teammodels.Team) (*teammodels.Team, *syst err2 := coll.FindOne(database.GetDefaultContext(), bson.M{"_id": objID}).Decode(&foundTeam) if err2 != nil { - return nil, &systemmodels.Error{ + return nil, &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.TEAM_NOT_FOUND, Message: "Team not found", @@ -448,14 +448,14 @@ func GetTeam(conn *mongo.Client, team *teammodels.Team) (*teammodels.Team, *syst return &foundTeam, nil } -func SearchTeams(searchText *string) (*[]teammodels.Team, *systemmodels.Error) { +func SearchTeams(searchText *string) (*[]teammodels.Team, *apimodels.Error) { foundTeams := []teammodels.Team{} return &foundTeams, nil } -func userExists(conn *mongo.Client, user string) *systemmodels.Error { +func userExists(conn *mongo.Client, user string) *apimodels.Error { coll := conn.Database(database.CurrentDatabase).Collection(database.USER) var foundUser usersmodels.User @@ -463,7 +463,7 @@ func userExists(conn *mongo.Client, user string) *systemmodels.Error { objID, err1 := utils.StringToObjectId(user) if err1 != nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.INVALID_OBJECT_ID, Message: "Invalid object id", @@ -473,7 +473,7 @@ func userExists(conn *mongo.Client, user string) *systemmodels.Error { err2 := coll.FindOne(database.GetDefaultContext(), bson.M{"_id": objID}).Decode(&foundUser) if err2 != nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.OWNER_DOESNT_EXIST, Message: "User doesn't exists", diff --git a/services/user/user.go b/services/user/user.go index 8ac3f49..2703f0e 100644 --- a/services/user/user.go +++ b/services/user/user.go @@ -6,8 +6,8 @@ import ( devicedal "github.com/akrck02/valhalla-core-dal/services/device" "github.com/akrck02/valhalla-core-sdk/http" "github.com/akrck02/valhalla-core-sdk/log" + apimodels "github.com/akrck02/valhalla-core-sdk/models/api" devicemodels "github.com/akrck02/valhalla-core-sdk/models/device" - systemmodels "github.com/akrck02/valhalla-core-sdk/models/system" usersmodels "github.com/akrck02/valhalla-core-sdk/models/users" "github.com/akrck02/valhalla-core-sdk/utils" "github.com/akrck02/valhalla-core-sdk/valerror" @@ -24,10 +24,10 @@ type EmailChangeRequest struct { NewEmail string `json:"new_email"` } -func Register(conn *mongo.Client, user *usersmodels.User) *systemmodels.Error { +func Register(conn *mongo.Client, user *usersmodels.User) *apimodels.Error { if utils.IsEmpty(user.Email) { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.EMPTY_USER_EMAIL, Message: "Email cannot be empty", @@ -35,7 +35,7 @@ func Register(conn *mongo.Client, user *usersmodels.User) *systemmodels.Error { } if utils.IsEmpty(user.Password) { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.EMPTY_USER_PASSWORD, Message: "Password cannot be empty", @@ -43,7 +43,7 @@ func Register(conn *mongo.Client, user *usersmodels.User) *systemmodels.Error { } if utils.IsEmpty(user.Username) { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.EMPTY_USERNAME, Message: "Username cannot be empty", @@ -53,7 +53,7 @@ func Register(conn *mongo.Client, user *usersmodels.User) *systemmodels.Error { var checkedPass = utils.ValidatePassword(user.Password) if checkedPass.Response != 200 { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: int(checkedPass.Response), Message: checkedPass.Message, @@ -63,7 +63,7 @@ func Register(conn *mongo.Client, user *usersmodels.User) *systemmodels.Error { checkedPass = utils.ValidateEmail(user.Email) if checkedPass.Response != 200 { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: checkedPass.Response, Message: checkedPass.Message, @@ -71,11 +71,11 @@ func Register(conn *mongo.Client, user *usersmodels.User) *systemmodels.Error { } coll := conn.Database(database.CurrentDatabase).Collection(database.USER) - found := mailExists(conn, user.Email, coll) + found := mailExists(user.Email, coll) if found != nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_CONFLICT, Error: valerror.USER_ALREADY_EXISTS, Message: "User already exists", @@ -85,7 +85,7 @@ func Register(conn *mongo.Client, user *usersmodels.User) *systemmodels.Error { code, err := utils.GenerateValidationCode(user.Email) if err != nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_INTERNAL_SERVER_ERROR, Error: valerror.CANNOT_CREATE_VALIDATION_CODE, Message: "User not created", @@ -104,7 +104,7 @@ func Register(conn *mongo.Client, user *usersmodels.User) *systemmodels.Error { res, errInsert := coll.InsertOne(database.GetDefaultContext(), userToInsert) if errInsert != nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_CONFLICT, Error: valerror.USER_ALREADY_EXISTS, Message: "User already exists", @@ -120,15 +120,15 @@ func Register(conn *mongo.Client, user *usersmodels.User) *systemmodels.Error { return nil } -func Login(conn *mongo.Client, user *usersmodels.User, ip string, address string) (string, *systemmodels.Error) { +func Login(conn *mongo.Client, user *usersmodels.User, ip string, address string) (string, *apimodels.Error) { // Connect database coll := conn.Database(database.CurrentDatabase).Collection(database.USER) log.Info("Password: " + user.Password) - found := authorizationOk(conn, user.Email, user.Clone().Password, coll) + found := authorizationOk(user.Email, user.Clone().Password, coll) if found == nil { - return "", &systemmodels.Error{ + return "", &apimodels.Error{ Status: http.HTTP_STATUS_FORBIDDEN, Error: valerror.USER_NOT_AUTHORIZED, Message: "Invalid credentials", @@ -139,7 +139,7 @@ func Login(conn *mongo.Client, user *usersmodels.User, ip string, address string device, err := devicedal.AddUserDevice(conn, found, device) if err != nil { - return "", &systemmodels.Error{ + return "", &apimodels.Error{ Status: http.HTTP_STATUS_INTERNAL_SERVER_ERROR, Error: valerror.UNEXPECTED_ERROR, Message: "Cannot generate your auth token", @@ -149,7 +149,7 @@ func Login(conn *mongo.Client, user *usersmodels.User, ip string, address string return device.Token, nil } -func LoginAuth(conn *mongo.Client, auth *usersmodels.AuthLogin, ip string, userAgent string) *systemmodels.Error { +func LoginAuth(conn *mongo.Client, auth *usersmodels.AuthLogin, ip string, userAgent string) *apimodels.Error { // Connect database @@ -171,7 +171,7 @@ func LoginAuth(conn *mongo.Client, auth *usersmodels.AuthLogin, ip string, userA device, deviceFindingError := devicedal.FindDeviceByAuthToken(devices, &filter) if deviceFindingError != nil || device == nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_NOT_FOUND, Error: valerror.USER_NOT_AUTHORIZED, Message: "No possible login devices", @@ -181,7 +181,7 @@ func LoginAuth(conn *mongo.Client, auth *usersmodels.AuthLogin, ip string, userA return nil } -func EditUser(conn *mongo.Client, user *usersmodels.User) *systemmodels.Error { +func EditUser(conn *mongo.Client, user *usersmodels.User) *apimodels.Error { // Connect database @@ -192,7 +192,7 @@ func EditUser(conn *mongo.Client, user *usersmodels.User) *systemmodels.Error { checkedPass := utils.ValidateEmail(user.Email) if checkedPass.Response != 200 { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: checkedPass.Response, Message: checkedPass.Message, @@ -206,7 +206,7 @@ func EditUser(conn *mongo.Client, user *usersmodels.User) *systemmodels.Error { checkedPass := utils.ValidatePassword(user.Password) if checkedPass.Response != 200 { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: checkedPass.Response, Message: checkedPass.Message, @@ -236,7 +236,7 @@ func EditUser(conn *mongo.Client, user *usersmodels.User) *systemmodels.Error { res, err := users.UpdateOne(database.GetDefaultContext(), bson.M{"email": user.Email}, toUpdate) if err != nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_INTERNAL_SERVER_ERROR, Error: valerror.USER_NOT_UPDATED, Message: "User not updated", @@ -244,7 +244,7 @@ func EditUser(conn *mongo.Client, user *usersmodels.User) *systemmodels.Error { } if res.MatchedCount == 0 && res.ModifiedCount == 0 { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_NOT_FOUND, Error: valerror.USER_NOT_FOUND, Message: "Users not found", @@ -254,12 +254,12 @@ func EditUser(conn *mongo.Client, user *usersmodels.User) *systemmodels.Error { return nil } -func EditUserEmail(conn *mongo.Client, mail *EmailChangeRequest) *systemmodels.Error { +func EditUserEmail(conn *mongo.Client, mail *EmailChangeRequest) *apimodels.Error { // Connect database if utils.IsEmpty(mail.Email) || utils.IsEmpty(mail.NewEmail) { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.EMPTY_USER_EMAIL, Message: "Email cannot be empty", @@ -268,7 +268,7 @@ func EditUserEmail(conn *mongo.Client, mail *EmailChangeRequest) *systemmodels.E // Equal emails if mail.Email == mail.NewEmail { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.USER_EDITING_EMAILS_EQUAL, Message: "The new email is the same as the old one", @@ -278,7 +278,7 @@ func EditUserEmail(conn *mongo.Client, mail *EmailChangeRequest) *systemmodels.E // validate email var checkedPass = utils.ValidateEmail(mail.Email) if checkedPass.Response != 200 { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: checkedPass.Response, Message: checkedPass.Message, @@ -287,10 +287,10 @@ func EditUserEmail(conn *mongo.Client, mail *EmailChangeRequest) *systemmodels.E // Check if user exists users := conn.Database(database.CurrentDatabase).Collection(database.USER) - found := mailExists(conn, mail.NewEmail, users) + found := mailExists(mail.NewEmail, users) if found != nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_CONFLICT, Error: valerror.USER_ALREADY_EXISTS, Message: "That email is already in use", @@ -300,7 +300,7 @@ func EditUserEmail(conn *mongo.Client, mail *EmailChangeRequest) *systemmodels.E // update user on database var checkedEmail = utils.ValidateEmail(mail.NewEmail) if checkedEmail.Response != 200 { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: int(checkedEmail.Response), Message: checkedEmail.Message, @@ -317,7 +317,7 @@ func EditUserEmail(conn *mongo.Client, mail *EmailChangeRequest) *systemmodels.E ) if err != nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_INTERNAL_SERVER_ERROR, Error: valerror.USER_NOT_UPDATED, Message: "User not updated" + err.Error(), @@ -325,7 +325,7 @@ func EditUserEmail(conn *mongo.Client, mail *EmailChangeRequest) *systemmodels.E } if updateStatus.MatchedCount == 0 { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_NOT_FOUND, Error: valerror.USER_NOT_FOUND, Message: "User not found", @@ -333,7 +333,7 @@ func EditUserEmail(conn *mongo.Client, mail *EmailChangeRequest) *systemmodels.E } if updateStatus.ModifiedCount == 0 { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_INTERNAL_SERVER_ERROR, Error: valerror.USER_NOT_UPDATED, Message: "User not updated", @@ -346,7 +346,7 @@ func EditUserEmail(conn *mongo.Client, mail *EmailChangeRequest) *systemmodels.E updateStatus, err = devices.UpdateMany(database.GetDefaultContext(), bson.M{"user": mail.Email}, bson.M{"$set": bson.M{"user": mail.NewEmail}}) if err != nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_INTERNAL_SERVER_ERROR, Error: valerror.USER_NOT_UPDATED, Message: "User devices not updated", @@ -354,7 +354,7 @@ func EditUserEmail(conn *mongo.Client, mail *EmailChangeRequest) *systemmodels.E } if updateStatus.MatchedCount != 0 && updateStatus.ModifiedCount == 0 { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_INTERNAL_SERVER_ERROR, Error: valerror.USER_NOT_UPDATED, Message: "User devices not updated", @@ -364,12 +364,12 @@ func EditUserEmail(conn *mongo.Client, mail *EmailChangeRequest) *systemmodels.E return nil } -func EditUserProfilePicture(conn *mongo.Client, user *usersmodels.User, picture []byte) *systemmodels.Error { +func EditUserProfilePicture(conn *mongo.Client, user *usersmodels.User, picture []byte) *apimodels.Error { // Connect database if utils.IsEmpty(user.Email) { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.EMPTY_USER_EMAIL, Message: "Email cannot be empty", @@ -382,7 +382,7 @@ func EditUserProfilePicture(conn *mongo.Client, user *usersmodels.User, picture err := utils.CreateDir(profilePathDir) if err != nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_INTERNAL_SERVER_ERROR, Error: valerror.USER_NOT_UPDATED, Message: "User not updated, image not saved :" + err.Error(), @@ -395,7 +395,7 @@ func EditUserProfilePicture(conn *mongo.Client, user *usersmodels.User, picture err := utils.SaveFile(profilePicPath, picture) if err != nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_INTERNAL_SERVER_ERROR, Error: valerror.USER_NOT_UPDATED, Message: "User not updated, image not saved :" + err.Error(), @@ -406,7 +406,7 @@ func EditUserProfilePicture(conn *mongo.Client, user *usersmodels.User, picture editErr := EditUser(conn, user) if editErr != nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_INTERNAL_SERVER_ERROR, Error: valerror.USER_NOT_UPDATED, Message: "User not updated", @@ -416,12 +416,12 @@ func EditUserProfilePicture(conn *mongo.Client, user *usersmodels.User, picture return nil } -func DeleteUser(conn *mongo.Client, user *usersmodels.User) *systemmodels.Error { +func DeleteUser(conn *mongo.Client, user *usersmodels.User) *apimodels.Error { // Connect database if utils.IsEmpty(user.Email) { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.EMPTY_USER_EMAIL, Message: "Email cannot be empty", @@ -433,7 +433,7 @@ func DeleteUser(conn *mongo.Client, user *usersmodels.User) *systemmodels.Error _, err := projects.DeleteMany(database.GetDefaultContext(), bson.M{"owner": user.Email}) if err != nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_INTERNAL_SERVER_ERROR, Error: valerror.USER_NOT_DELETED, Message: "User not deleted", @@ -445,7 +445,7 @@ func DeleteUser(conn *mongo.Client, user *usersmodels.User) *systemmodels.Error _, err = devices.DeleteMany(database.GetDefaultContext(), bson.M{"user": user.Email}) if err != nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_INTERNAL_SERVER_ERROR, Error: valerror.USER_NOT_DELETED, Message: "User not deleted", @@ -459,7 +459,7 @@ func DeleteUser(conn *mongo.Client, user *usersmodels.User) *systemmodels.Error deleteResult, err = users.DeleteOne(database.GetDefaultContext(), bson.M{"email": user.Email}) if err != nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_INTERNAL_SERVER_ERROR, Error: valerror.USER_NOT_DELETED, Message: "User not deleted", @@ -467,7 +467,7 @@ func DeleteUser(conn *mongo.Client, user *usersmodels.User) *systemmodels.Error } if deleteResult.DeletedCount == 0 { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_NOT_FOUND, Error: valerror.USER_NOT_FOUND, Message: "User not found", @@ -477,12 +477,12 @@ func DeleteUser(conn *mongo.Client, user *usersmodels.User) *systemmodels.Error return nil } -func GetUser(conn *mongo.Client, user *usersmodels.User, secure bool) (*usersmodels.User, *systemmodels.Error) { +func GetUser(conn *mongo.Client, user *usersmodels.User, secure bool) (*usersmodels.User, *apimodels.Error) { id, err := utils.StringToObjectId(user.ID) if err != nil { - return nil, &systemmodels.Error{ + return nil, &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.INVALID_OBJECT_ID, Message: "Invalid user id", @@ -498,7 +498,7 @@ func GetUser(conn *mongo.Client, user *usersmodels.User, secure bool) (*usersmod // if an error occurs, if err != nil { - return nil, &systemmodels.Error{ + return nil, &apimodels.Error{ Status: http.HTTP_STATUS_INTERNAL_SERVER_ERROR, Error: valerror.UNEXPECTED_ERROR, Message: err.Error(), @@ -507,7 +507,7 @@ func GetUser(conn *mongo.Client, user *usersmodels.User, secure bool) (*usersmod // if user not found, return error if found.ID == "" { - return nil, &systemmodels.Error{ + return nil, &apimodels.Error{ Status: http.HTTP_STATUS_NOT_FOUND, Error: valerror.USER_NOT_FOUND, Message: "User not found", @@ -523,7 +523,7 @@ func GetUser(conn *mongo.Client, user *usersmodels.User, secure bool) (*usersmod return &found, nil } -func GetUserByEmail(conn *mongo.Client, email string, secure bool) (*usersmodels.User, *systemmodels.Error) { +func GetUserByEmail(conn *mongo.Client, email string, secure bool) (*usersmodels.User, *apimodels.Error) { filter := bson.M{"email": email} @@ -534,7 +534,7 @@ func GetUserByEmail(conn *mongo.Client, email string, secure bool) (*usersmodels // if an error occurs, if err != nil { - return nil, &systemmodels.Error{ + return nil, &apimodels.Error{ Status: http.HTTP_STATUS_INTERNAL_SERVER_ERROR, Error: valerror.UNEXPECTED_ERROR, Message: err.Error(), @@ -543,7 +543,7 @@ func GetUserByEmail(conn *mongo.Client, email string, secure bool) (*usersmodels // if user not found, return error if found.ID == "" { - return nil, &systemmodels.Error{ + return nil, &apimodels.Error{ Status: http.HTTP_STATUS_NOT_FOUND, Error: valerror.USER_NOT_FOUND, Message: "User not found", @@ -559,12 +559,12 @@ func GetUserByEmail(conn *mongo.Client, email string, secure bool) (*usersmodels return &found, nil } -func ValidateUser(conn *mongo.Client, code string) *systemmodels.Error { +func ValidateUser(conn *mongo.Client, code string) *apimodels.Error { // Connect database if utils.IsEmpty(code) { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.INVALID_VALIDATION_CODE, Message: "Code cannot be empty", @@ -581,7 +581,7 @@ func ValidateUser(conn *mongo.Client, code string) *systemmodels.Error { log.FormattedInfo("code: ${0}", code) if err != nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.INVALID_VALIDATION_CODE, Message: "Invalid validation code", @@ -589,7 +589,7 @@ func ValidateUser(conn *mongo.Client, code string) *systemmodels.Error { } if user.Validated { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_OK, Error: valerror.USER_ALREADY_VALIDATED, Message: "User already validated", @@ -597,7 +597,7 @@ func ValidateUser(conn *mongo.Client, code string) *systemmodels.Error { } if user.ValidationCode != code { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_BAD_REQUEST, Error: valerror.INVALID_VALIDATION_CODE, Message: "Invalid validation code", @@ -611,7 +611,7 @@ func ValidateUser(conn *mongo.Client, code string) *systemmodels.Error { result, editerr := coll.UpdateOne(database.GetDefaultContext(), bson.M{"email": user.Email}, bson.M{"$set": bson.M{"validation_code": "", "validated": true}}) if result.MatchedCount == 0 { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_NOT_FOUND, Error: valerror.USER_NOT_FOUND, Message: "User not found", @@ -619,7 +619,7 @@ func ValidateUser(conn *mongo.Client, code string) *systemmodels.Error { } if editerr != nil { - return &systemmodels.Error{ + return &apimodels.Error{ Status: http.HTTP_STATUS_INTERNAL_SERVER_ERROR, Error: valerror.USER_NOT_UPDATED, Message: "User not validated: " + editerr.Error(), @@ -629,7 +629,7 @@ func ValidateUser(conn *mongo.Client, code string) *systemmodels.Error { return nil } -func mailExists(conn *mongo.Client, email string, coll *mongo.Collection) *usersmodels.User { +func mailExists(email string, coll *mongo.Collection) *usersmodels.User { filter := bson.D{{Key: "email", Value: email}} @@ -643,7 +643,7 @@ func mailExists(conn *mongo.Client, email string, coll *mongo.Collection) *users return &result } -func authorizationOk(conn *mongo.Client, email string, password string, coll *mongo.Collection) *usersmodels.User { +func authorizationOk(email string, password string, coll *mongo.Collection) *usersmodels.User { filter := bson.D{ {Key: "email", Value: email}, @@ -660,7 +660,7 @@ func authorizationOk(conn *mongo.Client, email string, password string, coll *mo return &result } -func getUserFromToken(conn *mongo.Client, token string) (usersmodels.User, *systemmodels.Error) { +func getUserFromToken(conn *mongo.Client, token string) (usersmodels.User, *apimodels.Error) { // Connect database @@ -670,7 +670,7 @@ func getUserFromToken(conn *mongo.Client, token string) (usersmodels.User, *syst err := devices.FindOne(database.GetDefaultContext(), bson.M{"token": token}).Decode(&tokenDevice) if err != nil { - return usersmodels.User{}, &systemmodels.Error{ + return usersmodels.User{}, &apimodels.Error{ Status: http.HTTP_STATUS_FORBIDDEN, Error: valerror.INVALID_TOKEN, Message: "User not matching token", @@ -683,7 +683,7 @@ func getUserFromToken(conn *mongo.Client, token string) (usersmodels.User, *syst err = users.FindOne(database.GetDefaultContext(), bson.M{"email": tokenDevice.User}).Decode(&tokenUser) if err != nil { - return usersmodels.User{}, &systemmodels.Error{ + return usersmodels.User{}, &apimodels.Error{ Status: http.HTTP_STATUS_FORBIDDEN, Error: valerror.INVALID_TOKEN, Message: "User not matching token", @@ -693,13 +693,13 @@ func getUserFromToken(conn *mongo.Client, token string) (usersmodels.User, *syst return tokenUser, nil } -func IsTokenValid(conn *mongo.Client, token string) (*usersmodels.User, *systemmodels.Error) { +func IsTokenValid(conn *mongo.Client, token string) (*usersmodels.User, *apimodels.Error) { // decode token claims, err := utils.DecryptToken(token, configuration.Params.Secret) if err != nil { - return nil, &systemmodels.Error{ + return nil, &apimodels.Error{ Status: http.HTTP_STATUS_FORBIDDEN, Error: valerror.INVALID_TOKEN, Message: "invalid token format", @@ -716,7 +716,7 @@ func IsTokenValid(conn *mongo.Client, token string) (*usersmodels.User, *systemm foundUser, tokenUserErr := getUserFromToken(conn, token) if tokenUserErr != nil { - return nil, &systemmodels.Error{ + return nil, &apimodels.Error{ Status: http.HTTP_STATUS_FORBIDDEN, Error: valerror.INVALID_TOKEN, Message: "invalid token", @@ -724,7 +724,7 @@ func IsTokenValid(conn *mongo.Client, token string) (*usersmodels.User, *systemm } if foundUser.Email != email { - return nil, &systemmodels.Error{ + return nil, &apimodels.Error{ Status: http.HTTP_STATUS_FORBIDDEN, Error: valerror.INVALID_TOKEN, Message: "invalid token",