Release History

Releases and changes.

Mobiz Backend v5.1.1

  • Send all the .NET Logs to the Mobiz Logger
  • Removed dependency to Hangfire.Pro

Mobiz Backend v5.1.0

Enhanced the MigrationRunner to apply migrations found in extensions in their own schema. Migrations can be using FluentMigrator or EntityFramework.

Mobiz Backend v5.0.1

Fixed recursion error from MobizElasticClient Added Grafana docker image with the default logger dashboard New endpoint (PATCH /user/{guid}) for patching user

Mobiz Backend v5.0.0

Upgraded to .NET Core v6.0

Mobiz Backend v4.4.2

  • Renamed the GroupMembership table to OrganizationGroupMembership & reference MembershipId instead of UserId
  • Created the InviteGroupMembership table for mappings between GroupId and InviteId

Mobiz Backend v4.4.1

Fixed the UserCreate action from the Migration Runner.

Mobiz Backend v4.2.0

Introduces the concept of ActivityFeed as described here https://gitlab.com/mobiz1/documentation/-/blob/activity-feed-documentation/mobiz-platform/ActivityFeed/ActivityFeedInGeneral.md.

Mobiz Backend v4.1.4

Invite and invite confirmation templates updated for a better user experience.

Mobiz Backend v4.1.3

Mobiz Invite template updated to only support english templates.

Mobiz Backend v4.1.0

DTO’s

Introduces UserProfile for patching a user based Profile

public class Profile
{
    /// <summary>
    /// Type of profile
    ///     * Organization
    ///     * User
    /// </summary>
    public ProfileType Type { get; set; }
    
    /// <summary>
    /// Public display name of the user
    /// </summary>
    public string DisplayName { get; set; }
    
    /// <summary>
    /// Profile picture (base64 encoded)
    /// </summary>
    public string ProfilePicture { get; set; }
    
    /// <summary>
    /// Name of the organization pertaining to the specific user
    /// </summary>
    public string OrganizationMembership { get; set; }
    
    /// <summary>
    /// Official title of the user within the organization
    /// </summary>
    public string OrganizationMembershipTitle { get; set; }
    /// <summary>
    /// Public phone number of profile.
    /// </summary>
    public string PhoneNumber { get; set; }
}

Introduces UserProfile DTO for creating user public profiles

public class UserProfile
{
    /// <summary>
    /// Name that the User has choosen to use.
    /// </summary>
    public string DisplayName { get; set; }
    /// <summary>
    /// Profile picture that the User has choosen to use.
    /// </summary>
    public IFormFile ProfilePicture { get; set; }
    /// <summary>
    /// Optional title that the User has choosen to use within a Organization.
    /// </summary>
    public string OrganizationMembershipTitle { get; set; }
    /// <summary>
    /// Public phone number to include in profile.
    /// </summary>
    public string PhoneNumber { get; set; }
}

Introduces OrganizationProfile DTO for creating organization public profiles

public class OrganizationProfile
{
    /// <summary>
    /// Name that the Organization has choosen to use.
    /// </summary>
    public string DisplayName { get; set; }
    /// <summary>
    /// Profile picture that the Organization has choosen to use.
    /// </summary>
    public IFormFile ProfilePicture { get; set; }
}

Endpoints

Introduces endpoints for getting / patching public profiles.

  • GET api/v1/user/profile/{userId:guid}?organizationId={guid}
    • Returns an public profile for a user and optional scoped to a organiation membership.
  • GET api/v1/organization/profile/{organizationId:guid}
    • Returns an public profile for a organization.
  • PATCH api/v1/user/profile/{userId:guid}
    • Patches a user profile using UserProfile as form data.
  • PATCH api/v1/user/organization/{organizationId:guid}
    • Patches a user profile using OrganizationProfile as form data.

Testing

Introduces the Mobiz.Test.Scenario project. Removes TestRunner, use GitLab services for testing.

Mobiz Backend v3.4.0

  • Made Mock services transient
  • Introduces IGlobalMockDataAccessor allowing for accessing data created by mock services.
    • Register in your custom fixture with this.mobizServices.RegisterExtensionService<IGlobalMockDataAccessor, GlobalMockDataAccessor>(MobizExtensionManager.SystemServiceKey);
      • MobizMockedTestFixture and MobizGlobalTestFixture already do so, meaning that if you inherit either fixture and register an mock service generated from the service can be accessed there.
    • Introduces extension method to retrieve accessor on all fixtures inheriting MobizBaseTestFixture example: this.fixture.GetGlobalMockDataAccessor()
  • Adds support for SqlServerTracker to remember its state between iterations when keepAlive is false.
    • This is done by setting SqlServerTrackerStoreSequenceNumber to true
  • Fixes data integrity for deletions and inserts
    • Instead of splitting the SQL rows by Deletion/Insert we are now creating buckets
      • Example: Instead of [Insert, Insert, Delete, Insert} becomming [[Insert, Insert, Insert], [Delete]] it becomes [[Insert, Insert], [Delete], [Insert]]
  • Introduces NotFoundExceptionHandler and NotFoundException for 404 error

Mobiz Backend v3.3.2

  • Fixes bug where validateDefaultEmail wasn’t respected in MockUserRepository.Update
  • Introduce Body(MultipartFormDataContent content) builder functions for sending IFormData in MobizTestServer
  • Adds TraceIdentifier and TrackingId as tags in Sentry
  • Fixes LogLevel on ValidationExceptions when intercepted by GlobalExceptionFilter

Mobiz Backend v3.3.1

  • Configure the HttpContextAccessor from the WebApiConfig.ConfigureWebApiServices method so that we obtain it via DI
  • Configure the HttpContextAccessor when setting up tests

Mobiz Backend v3.3.0

  • XSS filter: Ignore body argument if key = “password”
  • XSS filter: Configuration option for excluding body arguments from XSS filtering by name. Configuration property: “XssPreventionFilterArgumentExcludes” contains a CSV list of excluded argument names.
  • XSS filter: Configuration option for excluding URLs from XSS filtering by pattern. Configuration property: “XssPreventionFilterUrlExcludes” contains a CSV list of URL patterns to exclude.
  • DOCUMENTATION: Logging Feature Handbook v1 COMPLETED.
  • Logging API: Extension methods to simplify logging in terms of context information, HttpContext, Client information, etc.
    • General, simplified logging methods.
    • Add information from HttpContext: ClientId, ClientVersion, Browser, Os, etc.
    • Add details for authentication if available, like impersonation info and similar details.
  • Logging JSON: Improved JSON structure for Console logger to better match DataDog expected fields:
    • Add logger.name field
    • Add logger.thread_name field
    • Add error.stack field
    • Add error.kind field
  • Logging Sentry: Fixed how arguments are forwarded to Sentry. key/value arguments where sent as tags into Sentry API resulting in broken user experience when researching and analyzing. Now these are sent as extra arguments.